显示在JSF 2点十进制格式的数(Displaying a number in 2 point de

2019-06-24 03:16发布

我使用JSF 2和RichFaces的3在这里,在下面显示的图片,数字显示,因为它们是在数据库中的内容。

但我想将其显示为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

为什么它不工作? 这是怎么造成的,我该怎么解决呢?

Answer 1:

如果该值是不是可能发生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" />

又见标签库文件和DecimalFormat javadoc中。



文章来源: Displaying a number in 2 point decimal format in jsf