在 PrimeFaces <p:inputMask> 组件中提交不带掩码的值

Submit the value without the mask in PrimeFaces <p:inputMask> component

有没有办法在 PrimeFaces <p:inputMask> 组件中仅向模型提交不带掩码(格式)的原始值?

我的意思是,如果我在 mask 属性中有这个掩码 999.999.999-99 并且组件显示 123.456.789-10 作为用户输入的值,我想进入支持 bean 属性 只是 12345678910 作为值,而不是 123.456.789-10.

您需要编写一个转换器来在您后端的值和您要在 UI 中使用的值之间进行转换。例如:

@FacesConverter("myConverter")
public class MyConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
        if (string == null || string.isEmpty()) {
            return null;
        }
        return string.replace(".", "").replace("-", "");
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
        final String value = (String) o;
        if (value == null || value.length() != 11) {
            return null;
        }
        return value.substring(0, 3) + "."
                + value.substring(3, 6) + "."
                + value.substring(6, 9) + "-"
                + value.substring(9);
    }

}

可用作:

<p:inputMask value="#{testView.string}"
             converter="myConverter"
             mask="999.999.999-99"/>