inputMask with" N"值

时间:2014-10-13 21:14:56

标签: primefaces input-mask

如何在输入中输入“,”每4个数字,我有这样的事情:

<p:inputMask mask="9999, 9999" placeHolder="_"/>

但我需要“N”值,所以我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

输入掩码可用于约束输入,这在用户将数据输入系统时受到约束。您无法设置没有限制数字。

我建议你改用转换器。

XHTML

<h:form>
    <p:inputText id="input" 
                 converter="numberConverter" 
                 value="#{inputTextView.numberInput}" >
        <p:ajax process="input" 
                update="input" 
                event="blur"/>
    </p:inputText>
</h:form>

managedbean

@SessionScoped
@ManagedBean(name = "inputTextView")
public class InputTextView {

    private String numberInput;

    public String getNumberInput() {
        return numberInput;
    }

    public void setNumberInput(String numberInput) {
        this.numberInput = numberInput;
    }   
}

转换器

import java.io.Serializable;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 *
 * @author Wittakarn
 */
@FacesConverter("numberConverter")
public class NumberConverter implements Serializable, Converter {

    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
        return string.replaceAll(",", "");
    }

    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
        String resp = "";
        DecimalFormat decimalFormat;
        if (o != null) {
            decimalFormat = new DecimalFormat("#,####");
            decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
            try {
                resp = decimalFormat.format(Double.parseDouble(o.toString()));
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

        return resp;

    }
}