Java 为JSF/ICEfaces设置浮点格式区域设置?
我正在编写一个JSF(ICEfaces)应用程序,使用资源包处理国际化 应用程序很好地为资源包应用了(默认)荷兰“nl”语言环境,但在格式化浮点数时无法应用相同的语言环境,即使我使用Java 为JSF/ICEfaces设置浮点格式区域设置?,java,jsf,internationalization,icefaces,Java,Jsf,Internationalization,Icefaces,我正在编写一个JSF(ICEfaces)应用程序,使用资源包处理国际化 应用程序很好地为资源包应用了(默认)荷兰“nl”语言环境,但在格式化浮点数时无法应用相同的语言环境,即使我使用显式设置了页面的语言环境 如何使浮点数符合当前的语言环境设置?很可能您没有使用将数字转换为相应语言环境的转换器 <f:view locale="nl"> <h:outputText value="#{numbers.someDouble}"> <f:convert
显式设置了页面的语言环境
如何使浮点数符合当前的语言环境设置?很可能您没有使用将数字转换为相应语言环境的转换器
<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>
您可以使用nest
标记,并在faces.config.xml中将默认语言环境设置为“nl”。
这样,转换器会自动获取并使用默认的语言环境,您不需要在每个
标记处指定模式
faces-config.xml:
<application>
<locale-config>
<default-locale>nl</default-locale>
</locale-config>
</application>
nl
一个小测试表明,在我的情况下,一个简单的“”就足够了。我不明白为什么JSF在默认情况下不会将浮点格式设置为当前的语言环境,但是您的解决方案工作得很好。谢谢outputText
可能不直接支持数字;它将被赋予一个对象(例如,java.lang.Double
),并在输出时对其调用toString
。inputText
也不会有任何直接支持;在输入字符串时,表达式语言根据其类型强制规则将其强制回double。对于更复杂的逻辑,需要一个转换器。这是一个功能强大的模型,因为您可以在不需要输入/输出控件支持转换的情况下转换为任何类型,您是对的!问题在于隐式java浮点。toSTrink()不考虑区域设置(甚至OS)。标记有效地告诉outputText使用区域设置感知的字符串转换。@McDowell您能解释一下该模式是如何解释的吗?提前谢谢@eljunior-如果帖子中的内容还不够,请提出一个新问题。
<application>
<locale-config>
<default-locale>nl</default-locale>
</locale-config>
</application>