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

Posted

技术标签:

【中文标题】在jsf中以2点十进制格式显示数字【英文标题】:Displaying a number in 2 point decimal format in jsf 【发布时间】:2012-05-11 21:03:59 【问题描述】:

我正在使用 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 的所有可能组合。

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

【问题讨论】:

您的转换器应该可以正常工作。 minFractionDigits="2" 应该足够了。您是否在数据表之外尝试过相同的操作? 伙计,我也在数据表之外尝试过,但主要问题是数据类型,感谢@BalusC,他帮助了我。 【参考方案1】:

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

一旦您修复了数据类型,&lt;f:convertNumber&gt; 就会按照您的指示工作。请注意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 documentation 和 DecimalFormat javadoc。

【讨论】:

实际上在我的数据库中它们是数字,我以字符串形式获取它们,然后尝试将它们显示为具有某种模式的数字。现在我已将其更改为数组列表。现在它正在显示正确和所需的格式。谢谢好友,非常感谢...... 用名称货币,有什么方法可以显示 INR 符号和卢比,比如我可以显示美元($)符号。

以上是关于在jsf中以2点十进制格式显示数字的主要内容,如果未能解决你的问题,请参考以下文章

将数字转换为二进制并在java中以二进制数计数连续1的[关闭]

在 Angular 中以德语格式输入十进制数“有逗号”效果不佳

在 sparksql 中以正确格式将字符串数据转换为十进制时出现问题

在Textview中显示千位分隔符和十进制格式的数字

如何设置数字格式以显示C ++中的所有十进制数字? [关闭]

如何在 KDB 中以二进制格式保存列表/矩阵?