在jsf中以2磅十进制格式显示数字

时间:2012-05-02 11:34:42

标签: java jsf-2 richfaces converter

我正在使用JSF 2和RichFaces 3.在下图所示的数字中,数字显示为数据库中的数字。

enter image description here

但是如果小数部分存在,我想将它们显示为6749395.20,如果没有小数部分,我想显示5095138.00

截至目前,我已尝试过这样的事情。

 <rich:column>
    <f:facet name="header">
        <h:outputText value="Total Amount"/>
    </f:facet>
    <h:outputText value="#{rr[2]}">
        <f:convertNumber type="number" groupingUsed="true" minFractionDigits="2" pattern="#0.00"/>
    </h:outputText>
 </rich:column>

实际上我正在一起展示所有这些内容,但我已尝试将所有这些内容与typegroupingUsedminFractionDigitspattern一起使用。< / p>

为什么不起作用?这是怎么造成的,我该如何解决?

1 个答案:

答案 0 :(得分:38)

如果值根本不是Number,则会发生这种情况,例如String。然后,您基本上使用了错误的类型来表示它所代表的数据。要用Java表示货币,您应该使用BigDecimal。另外,请确保数据库表中的类型是正确的,即它不应该是varchar,而是小数。

修复数据类型后,<f:convertNumber>将按照您的说法运行。请注意,pattern属性将覆盖groupingUsedminFractionDigits。您应该使用pattern 其他人。此外,type="number"已经是默认设置,因此可以将其删除。

所以,要么使用

<f:convertNumber pattern="#0.00" />

<f:convertNumber groupingUsed="true" minFractionDigits="2" />

请注意,它们会生成不同的格式。您可能希望将分组设置为false

您也可以使用type="currency",然后根据UIViewRoot#getLocale()自动应用正确的模式:

<f:convertNumber type="currency" />

另请参阅tag library documentationDecimalFormat javadoc。