【问题标题】:Display amount in format $###,###,###.## using f:convertNumber使用 f:convertNumber 以 $###,###,###.## 格式显示金额
【发布时间】:2013-12-06 00:05:42
【问题描述】:

我想以$12,050,999.00 格式显示金额。

我尝试如下:

<h:outputText value="#{sampleBean.Amount}">
    <f:convertNumber pattern="###,###" currencySymbol="$" type="currency"/>
</h:outputText>

但是,它没有以所需的格式显示金额。我得到了12,050,999。

所需格式如下图所示:

我怎样才能做到这一点?

【问题讨论】:

  • pattern 覆盖 type。你猜怎么着,你的pattern 错了。摆脱它。
  • 那么,我应该使用什么模式@BalusC
  • 如前所述,摆脱它。 pattern 和 type 是互斥的。当两者都指定时,pattern 将覆盖 type。 type="currency" 已经隐式设置了您所需的货币模式。
  • 所以,如果我使用 它会如你所说
  • @BalusC 如果我使用这个&lt;f:convertNumber currencySymbol="$" type="currency"/ 然后它以$10000000.00 的格式显示,但我需要显示为$100,000,00.00 格式,即使我删除任何格式也不会发生pattern 和 type 之一,它们是互斥的

标签: jsf number-formatting


【解决方案1】:

您的pattern 的货币有误。你应该使用pattern="¤#,##0.00"。

<f:convertNumber pattern="¤#,##0.00" currencySymbol="$" />

但是,还有更多问题:在您的原始代码中,您还指定了 type 属性,这是正确的,但这与 pattern 属性互斥,因此 pattern 属性优先。

您实际上应该省略pattern 属性并坚持使用type 属性。

<f:convertNumber type="currency" currencySymbol="$" />

请注意,这使用了UIViewRoot#getLocale() 提供的语言环境,预计该语言环境是基于英语/美国的语言环境,以便为美元货币获得正确的最终格式。您想在&lt;f:view&gt; 中明确指定它:

<f:view locale="en_US">

或在&lt;f:convertNumber&gt; 的locale 属性中:

<f:convertNumber type="currency" currencySymbol="$" locale="en_US" />

另见:

【讨论】:

猜你喜欢
  • 2010-10-14
  • 2017-01-13
  • 1970-01-01
  • 2019-09-13
  • 2016-12-13
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多