注释中的多个验证选项

时间:2013-05-06 19:25:44

标签: annotations bean-validation hibernate-validator

我的问题是this one.的一个分支

我有一个我要验证的注释(比如电话注释)。我可以使用@phone验证器来检查手机对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有办法为一个注释使用多个验证器,所以我可以使用@phone作为我的电话对象和我的联系信息对象?

会不会像这样 @Constraint(validatedBy = {PhoneIsValid.class, PhoneIsValid2.class})工作? (想法是一个Validator处理电话对象,另一个处理联系信息对象。)

1 个答案:

答案 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> { ... }