【问题标题】:Hibernate validation @Pattern休眠验证@Pattern
【发布时间】:2012-11-19 07:16:56
【问题描述】:

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

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

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

@Pattern(regex = getRexEx())

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

我搜索了一下,发现regEx 应该是一个常量。但是,可以使用其他方法来完成此操作。

【问题讨论】:

  • 为什么需要这个你想在运行时改变它吗?我同意以下答案。
  • 当然,我也认为下面的答案是正确的、合乎逻辑的和描述性的。但我还在等待寻找是否有其他方法。:)
  • 另请参阅stackoverflow.com/questions/8994864/…,了解运行时定义约束。

标签: hibernate validation jsf richfaces


【解决方案1】:

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

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

【讨论】:

  • 感谢您的宝贵回答。看来您的建议是唯一的解决方案。但你知道我不会测试它。 :)
猜你喜欢
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多