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

2022-09-02 23:27:09

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

enter image description here

但是我想显示它们,就好像分数部分在那里,如果没有分数部分在那里。6749395.205095138.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

为什么它不起作用?这是如何引起的,我该如何解决?


答案 1

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

一旦您修复了数据类型,那么它将按照您的指示工作。请注意,该属性将覆盖 和 。您应该使用 或其他。此外,已经是默认值,因此可以将其删除。<f:convertNumber>patterngroupingUsedminFractionDigitspatterntype="number"

因此,要么使用

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

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

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

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

<f:convertNumber type="currency" />

另请参阅标记库文档DecimalFormat javadoc。


答案 2

推荐