我正在使用 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 控件动态分配属性值的首选方法是什么?
最佳答案
实现 javax.faces.validator.Validator
并将其注册为 <validator>
在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()));
}
}
关于Java服务器页面: How to get a value into an attribute from code without Expression Language?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880949/