1

我在托管 bean 中使用org.hibernate.validator.Pattern注释来验证组件。jsf<h:inputText>

@Pattern(regex="\\W+")
public String getText() {
  return text;
}

我的问题是,有没有一种方法可以从方法或 EL 中获取正则表达式而无需对其进行硬编码。
举个例子

@Pattern(regex = getRexEx())

或者

@Pattern(regex = "#{bean.regEx}")

我用谷歌搜索,发现regEx应该是一个常数。然而,可以有另一种方法来实现这一点。

4

1 回答 1

4

注释的参数需要是编译时常量,所以不,不可能将运行时表达式指定为@Pattern 的参数。也不可能将 EL 表达式作为参数传递并让它做任何事情,因为这根本不是模式验证器的编写方式。

但是,您可以做的是定义您自己的验证器类,该类采用 EL 表达式的形式并针对它验证 bean 属性。不过,祝你好运!不是一个简单的任务。

于 2012-12-01T03:07:21.023 回答