验证弹簧启动时的嵌套模型

2 java validation spring hibernate-validator jackson

我对嵌套模型的验证有问题,看看:

class A{
   @NotNull
   Integer i;
   B b;
}
class B{
   @NotNull
   Integer j;
}
Run Code Online (Sandbox Code Playgroud)

在弹簧控制器中:
@Valid @RequestBody...

它正确验证i,但不验证j.如何强制Spring进行任意深度验证?

第二件事:
是否可以进行以下验证:类'A'的对象仅适用于且仅当a中的i一个j是正确的null.

class A{
   Integer i;
   Integer j;
}
Run Code Online (Sandbox Code Playgroud)

aba*_*hel 10

支持对象图验证,您必须B b使用@Valid以下内容进行注释.

class A{
  @NotNull
  Integer i;
  @Valid
  B b;
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/?v=5.3#section-object-graph-validation.

对于问题的第二部分,您可以创建自定义Validator类.您还需要该Validator的自定义注释.您可以在此处查看文档页面上的详细信息.自定义Validator的示例在这里.

  • 如果 B 是包含要验证的项目的集合怎么办?也会起作用吗? (2认同)