Java 参数化h:commandButton
我使用的是JSF,我想将命令按钮的文本参数化,类似于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
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>