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

时间:2010-08-02 04:53:14

标签: jsf internationalization seam richfaces resourcebundle

我想从i18n软件包(接缝中的messages.properties)中检索消息信息,但我不确定如何在我的xhtml中动态传递declare /传递jobCount变量

现有代码如下所示。

<s:decorate template="/layout/panel-name.xhtml">
    <ui:define name="label">User has been assigned #{jobCount} jobs</ui:define>
</s:decorate>

2 个答案:

答案 0 :(得分:11)

我认为这应该有效:

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

答案 1 :(得分: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>

或者,如果它是动态消息,并且您正在使用h:message

在邮件属性中使用此语法:

  

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);
    }
}