【问题标题】:<f:convertNumber> inside <h:outputText> doesn't work<h:outputText> 中的 <f:convertNumber> 不起作用
【发布时间】:2015-11-25 22:27:34
【问题描述】:

我想输出带有货币价值的文本:

<h:form rendered="#{not empty cartBean.cartMap}">
    <h:outputText escape="false" styleClass="cart-text"
              value="Your shopping cart: &lt;b&gt;
                    #{cartBean.cartDishesCount}&lt;/b&gt; items, 
                    total= &lt;b&gt;#{cartBean.updateTotalPrice()}&lt;/b&gt;">
        <f:convertNumber currencyCode="USD" type="currency"/> <!-- doesn't work -->
    </h:outputText>
</h:form>

但是&lt;f:converNumber&gt; 被忽略并且页面输出仍然看起来像这样:

您的购物车:9 件商品,总计 = 46.800000000000004

【问题讨论】:

  • 渲染器应该如何知道他应该将字符串的哪些部分格式化为货币?
  • 您还有另一个主要问题:使用浮点类型而不是 BigDecimal 来计算金钱和价格。

标签: jsf


【解决方案1】:

尽量只有值中的值

<h:outputText value="#{cartBean.updateTotalPrice}" >
  <f:convertNumber currencyCode="USD" type="currency" />
</h:outputText>

convert number 需要一个数字,因为 outputText 的值是一个字符串,所以它不能识别它。

任何不是数字的都将单独显示。

如果您想明确指定位置,那么这是一个选项

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

【讨论】:

  • 当然,当我将输出分成两部分时,第二部分只是cartBean.updateTotalPrice 的值,它开始按我的需要工作。在这种情况下,currencyCode="USD" 也可以正常工作。非常感谢!
猜你喜欢
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多