javax Validator 默认递归验证

LIv*_*nov 5 java validation json javax

我有两个类,其中一个嵌套在另一个类中。我想根据我的这种结构反序列化和验证传入的 JSON。我有一个通过以下方式获得的 javax 验证器

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Run Code Online (Sandbox Code Playgroud)

后来我做:

Set<ConstraintViolation<Object>> validate = validator.validate(obj);
Run Code Online (Sandbox Code Playgroud)

obj我的反序列化 JSON在哪里。我的嵌套类是

class Foo {

  @Min(5)
  Integer a;

  List<Bar> bars;

  static class Bar {
    @Min(2)
    Integer b;
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道,除非我@Valid在我的List<Bar> bars字段上指定注释,否则validator不会进行递归验证。但是,我希望 的默认行为validator是递归的。

在获取 的实例时有没有办法做到这一点Validator

小智 0

您可以使用@Valid来实现此目的,它允许“验证级联”(请参阅​​此示例

class Foo {

  @Min(5)
  Integer a;

  @Valid
  List<Bar> bars;

  static class Bar {
    @Min(2)
    Integer b;
  }
}
Run Code Online (Sandbox Code Playgroud)