使用内置注释创建自定义验证注释

时间:2014-07-07 02:26:46

标签: java validation hibernate-validator

在我工作的系统中,username必须是emailcell number

我使用Hibernate Validator来验证bean。

我想创建一个自定义注释@Username,以便将bean属性验证为emailcell number

可以使用@Email验证电子邮件,使用@Pattern使用正则表达式验证单元格编号,但我无法弄清楚如何编写自定义验证程序,以便我可以重复使用上面的内置注释

我提到了Creating custom validator部分来创建自定义验证器。

基本上我的问题是,

如何使用内置验证注释(@Email@Pattern)来撰写新注释@Username,以便@Username将属性验证为{{} 1}}或email

cell number

1 个答案:

答案 0 :(得分:2)

如果您想要符合Bean Validation,则不能。没有OR组成约束的概念。但是,如果您正在使用Hibernate Validator并且您可以使用提供程序特定功能,则可以在Hibernate Validator中使用布尔组合 - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-boolean-constraint-composition

@Target(FIELD)
@Retention(RUNTIME)
@Constraint(validatedBy = {})
@Documented
@ConstraintComposition(OR)
@Email
@Pattern("...")
public @interface Username {
   /* ... */
}