我可以将Bean类变量用于<f:validateregex pattern“#{bean.beanvariable}”=“”>

时间:2015-09-18 10:38:09

标签: jsf

我正在使用项目中的设置部分。我想从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>

1 个答案:

答案 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>