JSF如何通过配置语言环境来忽略操作系统语言?

时间:2013-04-05 13:06:54

标签: jsf locale

根据操作系统$ 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>

有什么想法解决我的问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

JSF使用默认语言环境调用Integer.toString()或Long.toString()方法。

第一个解决方案:

ServletContextListener

致电Locale.setDefault(myHardcodeLocale);

第二个解决方案

创建自定义格式化程序。您可以使用facelets并为数字创建自己的outputText。

<h:outputText value="#{myController.myNumberValue}">
    <f:convertNumber type="#,###.00"/>
</h:outputText>