我在org.hibernate.validator.Pattern
托管bean中使用jsf
注释来验证<h:inputText>
组件。
@Pattern(regex="\\W+")
public String getText() {
return text;
}
我的问题是,是否有办法从方法或EL中获取正则表达式,并对其进行硬编码 例如
@Pattern(regex = getRexEx())
OR
@Pattern(regex = "#{bean.regEx}")
我用Google搜索,发现regEx
应该是一个常量。但是,可以有另一种方法来实现这一目标。
答案 0 :(得分:4)
注释的参数需要是编译时常量,所以不,不可能将运行时表达式指定为@Pattern的参数。也不可能将EL表达式作为参数传递并让它做任何事情,因为嗯,这根本不是模式验证器的编写方式。
可以做的是定义一个自己的验证器类,它采用EL表达式的形式并根据它验证bean属性。祝你上下文管理好运!这不是一项简单的任务。