如何动态地向资源包中的消息传递参数

5
我希望能够从i18n包(seam中的messages.properties)中检索消息信息,但我不确定如何在我的xhtml中动态地传递declare / pass jobCount变量。
现有代码如下。
<s:decorate template="/layout/panel-name.xhtml">
    <ui:define name="label">User has been assigned #{jobCount} jobs</ui:define>
</s:decorate>
2个回答

12

我认为这应该可以工作:

<h:outputFormat value="#{msg.yourMessage}">
  <f:param value="#{myBean.jobCount}" />
</h:outputFormat>

那确实是标准的做法。 - BalusC
这对我没有用,但是 value="#{bundle['msg.yourMessage']}" 可以。 - Philip Durbin

2
我发现了这段代码片段:
#{interpolator.interpolate(messages['myMessage'],jobCount)}

我想这就是你在寻找的内容:Messages and placeHolders 如果是静态信息,否则可以使用字符串连接(丑陋):
<s:decorate template="/layout/panel-name.xhtml">
    <ui:define name="label">#{messages['myMessage']} #{jobCount}</ui:define>
</s:decorate>

如果它是一个动态消息,而你正在使用标签

请在消息属性中使用以下语法:

myMessage= 用户已被分配 {1} 个作业

然后当你在Bean中创建消息时

@Name("myBean") 
public class Bean {
    @In(create = true) FacesMessages facesMessages;
    @In Map messages;

    public String action() {
         // Action here
         facesMessages.add(messages.get("myMessage"), jobCount);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接