ConvertNumber 做 JSF 负值

ConvertNumber do JSF negative values

负货币值,当我使用 JSF 的本机转换器时,<f:convertNumber type="currency"/>,在货币符号之前保留字符“-”。

例如:-$ 56.134.726,99

.xhtml

<p:column>
    <h:outputText value="#{entity.monetaryValue}">
        <f:convertNumber type="currency"/>
    </h:outputText>
</p:column>

对于这个问题,除了创建我自己的 Converter 之外,还有其他解决方案吗?

实现 Converter 并覆盖 getAsString() 方法为:


public String getAsString(FacesContext context, UIComponent component, Object value) {
    if (value == null)
                return "";
    return "$"  + String.valueOf(NumberFormat.getNumberInstance(Locale.US).format(value));
}

怎么样:

<f:convertNumber type="currency" currencySymbol="$" locale="DE" 
      pattern="¤###,###,##0.00;¤-###,###,##0.00"    />

模式描述here


注意:我使用 locale="DE" 是因为在此语言环境中 , 用作小数点分隔符,而 . 用作组分隔符。