<f:convertNumber数字模式,用于显示"10000000"为"1,00,00,000" - JSF2.0

Sun*_* Ks 3 jsf-2

我有啊:outputText字段,用于显示特定模式中的金额.

例如.10000000需要格式化为1,00,00,000我使用<f:convertNumber />标签来实现此目的.我尝试在locale属性中添加hi_IN和en_IN,但结果格式化为10,000,000.然后通过应用具有以下值(#,##,## 0.00)的pattern属性尝试得到相同的结果10,000,000.00.请建议?

示例代码:

<h:outputText value="#{sampleBean.amount}">
    <f:convertNumber pattern="#,##,##0.00"/>
</h:outputText>

<h:outputText value="#{sampleBean.amount}">
   <f:convertNumber locale="hi_IN" />
</h:outputText>

<h:outputText value="#{sampleBean.amount}">
   <f:convertNumber locale="en_IN" />
</h:outputText>
Run Code Online (Sandbox Code Playgroud)

Jit*_*esh 5

制作自定义转换器如下,

import com.ibm.icu.text.NumberFormat;
import java.math.BigDecimal;
import java.util.Locale;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

@FacesConverter("currencyFormat")
public class CurrencyFormat implements Converter {

@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
    return null;
}

@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
    if (value == null) {
        return null;
    } else {
        if (value.toString().trim().equals("")) {
            return null;
        }
        try {
            Locale l=new Locale("en", "in");
            NumberFormat format = com.ibm.icu.text.NumberFormat.getNumberInstance(l);
            format.setMinimumFractionDigits(2);
            return format.format(new BigDecimal(value.toString()));

        } catch (Exception exception) {
            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid Number"));
        }
    }
}}
Run Code Online (Sandbox Code Playgroud)

然后尝试以下,

<h:outputText value="10000000" converter="currencyFormat"/>
Run Code Online (Sandbox Code Playgroud)

注:我用IBM ICU4J库转换号码,这是可以在这里