在 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"/>
有没有办法在 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"/>