我的问题是this one.的一个分支
我有一个我要验证的注释(比如电话注释)。我可以使用@phone验证器来检查手机对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有办法为一个注释使用多个验证器,所以我可以使用@phone作为我的电话对象和我的联系信息对象?
会不会像这样
@Constraint(validatedBy = {PhoneIsValid.class, PhoneIsValid2.class})
工作? (想法是一个Validator处理电话对象,另一个处理联系信息对象。)
答案 0 :(得分:2)
可以为同一注释类型提供多个验证器。
如您所述,您已在@Constraint
注释中定义了所有这些内容。
Annotaion:
@Documented
@Target({ ElementType.ANNOTATION_TYPE, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { ValidPhonePhoneValidator.class, ValidPhoneContactValidator.class })
public @interface ValidPhone {
String message() default "";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
Validator1:
public class ValidPhonePhoneValidator implements ConstraintValidator<Phone, Object> { ... }
Validator2:
public class ValidPhoneContactValidator implements ConstraintValidator<Contact, Object> { ... }