Java 参数化h:commandButton

Java 参数化h:commandButton,java,jsf,internationalization,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

我使用的是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}" [...] >


有什么提示吗?

我们使用了JSF1.2,并且在我们自己的定制
taglib
中定义了一个方法

<h:commandButton value="#{g:formatMessage('Text {0} some more text', bean.value)}" >
标记库在
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>

facelets.LIBRARIES
指向自定义标签库的路径/WEB-INF/tomahawk.taglib.xml;
该方法在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>

格式化消息
com.XXX.XXX.XXX.JavaClass
java.lang.String格式消息(java.lang.String,java.lang.String)

一个接受消息id和参数列表/数组并返回完整消息字符串的支持bean方法怎么样?@MattHandy类似于
{bean.format(msg.text,bean.value())}
的方法,它解析所有的
{N}
并进行替换?@MattHandy I可以是一个选项,原生JSF解决方案会更容易,但为什么不:-)请注意,这不允许在不指定多个函数的情况下提供多个参数。不幸的是,EL函数不支持varargs。对于多个参数,可进行调整
True,但这些消息模板通常从捆绑文件中检索,而不是在视图中硬编码。
<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>