我正在编写一个JSF(ICEfaces)应用程序,使用资源束来处理国际化。为JSF/ICEfaces设置浮点格式化区域设置?
应用程序很好地为资源包应用(默认)荷兰语“nl”区域设置,但无法在格式化浮点数时应用相同的区域设置,即使我使用<f:view locale="nl">
明确设置了页面的区域设置。
如何使浮点数跟随当前的区域设置?
我正在编写一个JSF(ICEfaces)应用程序,使用资源束来处理国际化。为JSF/ICEfaces设置浮点格式化区域设置?
应用程序很好地为资源包应用(默认)荷兰语“nl”区域设置,但无法在格式化浮点数时应用相同的区域设置,即使我使用<f:view locale="nl">
明确设置了页面的区域设置。
如何使浮点数跟随当前的区域设置?
很可能您没有使用转换器将format的数字转换为相应的语言环境。
<f:view locale="nl">
<h:outputText value="#{numbers.someDouble}">
<f:convertNumber pattern="#,##0.00;(#,##0.00)" />
</h:outputText>
<br />
<h:outputText value="#{numbers.someDouble}">
<f:convertNumber locale="en" pattern="#,##0.00;(#,##0.00)" />
</h:outputText>
</f:view>
这种观点(与许多,其次是在英语语言环境数荷兰区域图)产生以下输出:
12.341.234,43
12,341,234.43
您可以使用嵌套<convertNumber>
标签并设置默认语言环境“ nl“在faces.config.xml中。 这样,转换器会自动获取并使用默认语言环境,并且您无需在每个<convertNumber>
标记处指定模式。
faces-config.xml中:
<application>
<locale-config>
<default-locale>nl</default-locale>
</locale-config>
</application>
一个小测试让我明白了一个简单的 “ ” 已足够在我的情况。我很疑惑为什么JSF不会默认格式化一个浮点到当前的语言环境,但你的解决方案就像一个魅力。谢谢! –
Timo
2009-11-16 12:44:15
'outputText'可能不会直接支持数字;它会被赋予一个对象(例如'java.lang.Double')并在输出上调用'toString'。 'inputText'也不会有任何直接的支持;在输入一个字符串时,表达式语言根据其强制类型的规则强制回到一个double。对于更复杂的逻辑,需要一个转换器。这是一个强大的模型,因为您可以转换为任何类型或不需要输入/输出控件来支持转换。 – McDowell 2009-11-16 14:16:55
你是对的!问题在于隐含的Java Float.toString(),它不考虑区域设置(即使是OS)。 标记有效地告诉outputText使用感知区域的字符串转换。 –
Timo
2009-11-18 12:46:39