在我工作的系统中,username
必须是email
或cell number
。
我使用Hibernate Validator来验证bean。
我想创建一个自定义注释@Username
,以便将bean属性验证为email
或cell number
。
可以使用@Email
验证电子邮件,使用@Pattern
使用正则表达式验证单元格编号,但我无法弄清楚如何编写自定义验证程序,以便我可以重复使用上面的内置注释
我提到了Creating custom validator部分来创建自定义验证器。
基本上我的问题是,
如何使用内置验证注释(@Email
和@Pattern
)来撰写新注释@Username
,以便@Username
将属性验证为{{} 1}}或email
?
cell number
答案 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 {
/* ... */
}