在 JSF 中更改语言而不更改语言环境



我目前有一个JSF应用程序,它根据用户选择的语言设置语言环境。他得到一个下拉菜单,在选择英语时,我将区域设置设置为 en 等。这适用于数字格式以及从我的资源包加载的语言字符串。

所以对于 en,我得到英语单词和一个 . 作为小数分隔符。对于 fr,我得到法语和 ,作为小数分隔符。

但是,现在要求对于此网站,数字格式必须始终具有 ,作为小数位分隔符。所以,我想将语言环境固定为 fr。

用户仍然必须能够更改其语言。那么,是否可以在 JSF 中加载不同的语言而不更改区域设置?

接缝 您需要一个特殊的格式化解决方案,因此覆盖格式化程序可能是更好的解决方案。我认为 JSF 支持替换默认的数字格式。

只需显式指定您在此处使用的<f:convertNumber>标签的 locale 属性即可。

例如

<f:convertNumber ... locale="fr" />

或类似的东西

<f:convertNumber ... locale="#{app.defaultNumberLocale}" />

否则,它确实会默认为 UIViewRoot#getLocale() ,正如您正在经历的那样。

另请参阅:

  • <f:convertNumber>标记文档 - 阅读 locale 属性

最新更新