Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting floating point formatting locale for JSF / ICEfaces?

I am writing a JSF (ICEfaces) application using resource bundles to handle internationalisation.

The application nicely applies the (default) Dutch "nl" locale for the resource bundle but fails to apply the same locale on formatting floating point numbers, even if I explicitly set the locale for a page using <f:view locale="nl">.

How do I make floating point numbers follow the current locale setting?

like image 229
Timo Avatar asked Nov 16 '09 11:11

Timo


2 Answers

It is likely that you are not using a converter to format the numbers to the appropriate locale.

  <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>

This view (a Dutch locale view with a number, followed by an English locale number) produces the following output:

12.341.234,43
12,341,234.43
like image 78
McDowell Avatar answered Sep 20 '22 17:09

McDowell


You can use nest <convertNumber> tag and set the default locale to "nl" in faces.config.xml. That way, the converters automatically get and use the default locale and you do not need to specify a pattern at each <convertNumber> tag.

faces-config.xml:

    <application>
        <locale-config>
          <default-locale>nl</default-locale>
        </locale-config>
    </application>
like image 21
Sylar Avatar answered Sep 19 '22 17:09

Sylar