【问题标题】:Setting floating point formatting locale for JSF / ICEfaces?为 JSF/ICEfaces 设置浮点格式化语言环境?
【发布时间】:2010-12-17 00:45:51
【问题描述】:

我正在编写一个使用资源包来处理国际化的 JSF (ICEfaces) 应用程序。

应用程序很好地为资源包应用了(默认)荷兰语“nl”语言环境,但未能在格式化浮点数时应用相同的语言环境,即使我使用 <f:view locale="nl"> 明确设置页面的语言环境。

如何使浮点数遵循当前的语言环境设置?

【问题讨论】:

    标签: java jsf internationalization icefaces


    【解决方案1】:

    您可能没有使用转换器将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
    

    【讨论】:

    • 一个小测试告诉我,一个简单的“”在我的情况下已经足够了。我很困惑为什么 JSF 默认情况下不会将浮点格式设置为当前语言环境,但是您的解决方案就像一个魅力。谢谢!
    • outputText 可能对数字没有任何直接支持;它将被赋予一个对象(例如java.lang.Double)并在输出时调用toStringinputText 也没有任何直接支持;在输入字符串时,表达式语言根据其类型强制规则将其强制转换回双精度。对于更复杂的逻辑,需要转换器。这是一个强大的模型,因为您可以在任何类型之间进行转换,而无需输入/输出控件来支持转换。
    • 你是对的!问题在于隐式 Java Float.toString() 不考虑区域设置(甚至是操作系统)。 标签有效地告诉 outputText 使用区域设置感知字符串转换。
    • @McDowell 你能解释一下这个模式是如何解释的吗?提前致谢!
    • @eljunior - 如果帖子中的 link 不够,请提出新问题。
    【解决方案2】:

    您可以使用nest &lt;convertNumber&gt; 标签并在faces.config.xml 中将默认语言环境设置为“nl”。 这样,转换器会自动获取并使用默认语言环境,您无需在每个 &lt;convertNumber&gt; 标记处指定模式。

    faces-config.xml:

        <application>
            <locale-config>
              <default-locale>nl</default-locale>
            </locale-config>
        </application>
    

    【讨论】:

      猜你喜欢
      • 2013-01-06
      • 2017-12-08
      • 2018-02-26
      • 2016-03-29
      • 2012-12-31
      • 2015-08-21
      • 1970-01-01
      • 2010-09-09
      • 2011-09-20
      相关资源
      最近更新 更多