1

我正在使用 MyFaces 1.1 ValidateRegExpr 标记来根据正则表达式验证用户的输入。

我希望能够通过代码动态分配正则表达式模式,但根据http://myfaces.apache.org/commons11/myfaces-validators11/tagdoc/mcv_validateRegExpr.html属性模式不支持表达式语言。

我的 JSP 文件中的标记应该如下所示:

<tc:in value="${dataBean.currentBean.field}">
        <mcv:validateRegExpr
            pattern="${dataBean.currentBean.validationRegEx}"
            message="${dataBean.currentBean.validationMessage" />
</tc:in>

将属性值动态分配给不支持 EL 的 jsp 控件的首选方法是什么?

4

1 回答 1

1

实现 ajavax.faces.validator.Validator并将其注册为<validator>in faces-config.xml。在真正的 Java 类中,您可以自由编写普通的 Java 代码 :)

基本启动示例:

public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    SomeBean someBean = SomeFacesUtil.evaluateExpressionGet("someBean", SomeBean.class);
    if (!value.toString().matches(someBean.getPattern())) {
        throw new ValidatorException(new FacesMessage(someBean.getMessage()));
    }
}
于 2009-12-10T13:49:35.383 回答