我正在使用项目中的设置部分。我想从DB获取表单属性,如maxlength,minlength,pattern等。 我想将我的bean类变量用作模式String。那可能吗? minlength,maxlength属性使用bean类变量工作正常,但validateRegex无法正常工作
Bean代码
@Service
class CategoryBean {
String categoryNamePattern;
String showForm(){
categoryNamePattern = "([a-zA-Z ]*[a-zA-Z]+[a-zA-Z ]*)";
return "myform.xhtml";
}
}
myform.xhtml使用正则表达式模式的bean类变量
<p:inputText id="name" value="#{categoryBean.selectedCategory.name}">
<f:validateRegex for="name" pattern="#{categeoryBean.categoryNamePattern}"/>
</p:inputText>
myform.xhtml这适用于
中定义的模式 <p:inputText id="name" value="#{categoryBean.selectedCategory.name}">
<f:validateRegex for="name" pattern="([a-zA-Z ]*[a-zA-Z]+[a-zA-Z ]*)"/>
</p:inputText>
答案 0 :(得分:-1)
最后我使用了验证器标签。写了一个新的验证方法 这很好。
@Service
class CategoryBean {
String catNamePattern;
String showForm(){
categoryNamePattern = "([a-zA-Z ]*[a-zA-Z]+[a-zA-Z ]*)";
return "myform.xhtml";
}
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (catNamePattern != null) {
RegexValidator regexValidator = new RegexValidator();
regexValidator.setPattern(categoryNamePattern);
regexValidator.validate(context, component, value);
}
}
}
<p:inputText id="name" value="#{categoryBean.selectedCategory.name}">
<f:validateRegex for="name" pattern="#{categeoryBean.categoryNamePattern}" validator="#{categoryBean.validate}" />
</p:inputText>