参数化h:commandButton

时间:2012-08-15 07:18:34

标签: java jsf internationalization

我正在使用JSF,我想与h:outputFormat类似地参数化命令按钮的文本。

这样的东西
<h:commandButton value="Text {0} some more text" [...] >

目前我

<h:commandButton value="Text #{bean.value()} some more text" [...] >

但这使我每次有参数

时将所有存储为属性的文本分成两部分
<h:commandButton value="#{msg.textbefore} #{bean.value()} #{msg.textafter}" [...] >

任何提示?

1 个答案:

答案 0 :(得分:1)

我们使用JSF 1.2,并且已经在我们自己的自定义taglib中定义了一个方法。

<h:commandButton value="#{g:formatMessage('Text {0} some more text', bean.value)}" >

其中g:我们定义的名称空间。

xmlns:g="http://www.client.com/product"

taglib已在web.xml

中注册
<context-param>
    <param-name>facelets.LIBRARIES</param-name>
    <param-value>
        PATH_TO_CUSTOM_TAGLIB;/WEB-INF/tomahawk.taglib.xml;
    </param-value>
</context-param>

并且该方法在taglib中定义为:

<function>
    <function-name>formatMessage</function-name>
    <function-class>com.XXX.XXX.XXX.JavaClass</function-class>
    <function-signature>java.lang.String formatMessage(java.lang.String, java.lang.String)</function-signature>
</function>