我需要使用不同的验证程序选项的多个 PersonDTO 字段的自定义验证 PersonConstraint 批注。这是代码:
public class PersonDTO {
public PersonDTO() {}
Long id;
@PersonConstraint(constraint = @Constraint(validatedBy = NameValidator.class))
String name;
@PersonConstraint(constraint = @Constraint(validatedBy = RegNumValidator.class))
String registrationNumber;
...
}
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PersonConstraint {
String message() default "{com.b.green.PersonConstraint.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
Constraint constraint();
}
但是,注释似乎无法按以下方式工作。它仅适用于:
public class PersonDTO {
public PersonDTO() {}
Long id;
@PersonConstraint
String name;
@PersonConstraint
String registrationNumber;
...
}
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = NameValidator.class)
public @interface PersonConstraint {
String message() default "{com.b.green.PersonConstraint.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
是否可以使代码的第一个版本正常工作?我需要通过注释参数来管理验证器。