根据操作系统$LANG值的不同,在JSF页面中数字的显示是不同的。例如,使用代码:
<h:outputText value="#{myController.myNumberValue}" />
使用$LANG = en_US。ISO-8859-1,我有"623,451"。使用$LANG = fr_FR。UTF-8,我有"623 451"。
我的问题是我的应用程序如何独立于操作系统配置?
我在faces-config.xml中尝试了以下配置,但它不起作用:
<locale-config>
<default-locale>en</default-locale>
</locale-config>
我还尝试将h:outputText标签封装在以下标签中,但它也不起作用:
<f:view locale="en">
<h:outputText value="#{myController.myNumberValue}" />
</f:view>
有什么办法可以解决我的问题吗?JSF调用您的方法Integer.toString()或Long.toString()与默认区域设置。
第一解决方案:
从ServletContextListener调用Locale.setDefault(myHardcodeLocale);
第二方案:
创建自定义格式化程序。您可以使用facelets并为数字创建自己的outputText。
<h:outputText value="#{myController.myNumberValue}">
<f:convertNumber type="#,###.00"/>
</h:outputText>