我正在使用Hibernate Validator - 5.2.2(JSR 303)。
我正在进行跨领域验证,因此我需要创建一个自定义验证器。
但是我不知道如何进行自定义条件嵌套验证。
示例:
@ValidChildrenIfEnabled
public class MainDto {
public boolean isEnabled;
public List<Child> children;
}
public class Child {
@NotBlank
public String name;
@Range(min = 1, max = 3)
public int age;
}
如果我不需要条件验证,我会说 @Valid在“孩子们”之上。
@Valid
public List<Child> children;
注意:我知道如何创建自定义验证器,我只是不知道如何创建一个自定义验证器,它使用现有的内置验证器进行嵌套验证。谢谢!
编辑:
我的有效载荷实际上还有一个有效载荷,比方说SuperDto。
public class SuperDto {
@Valid
public List<MainDto> mainDtos;
}
我做这样的验证:
validator.validate(superDto);
答案 0 :(得分:1)
有趣的用例。不幸的是,我不认为你可以做你想做的事情,因为你可以从isValid()触发验证。
假设您想要在每种情况下验证其他约束,我认为最好的解决方法可能是使用组。并根据ifEnabled是否为真来使用不同的组。
无论如何,你必须要特殊情况如何验证这个bean。