Spring自定义验证JSR-303 @Constraint

时间:2018-10-08 03:19:37

标签: java spring annotations constraints bean-validation

我需要使用不同的验证程序选项的多个 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 {};

}

是否可以使代码的第一个版本正常工作?我需要通过注释参数来管理验证器。

0 个答案:

没有答案