【发布时间】:2016-07-14 05:29:02
【问题描述】:
我有几个嵌套类,我想在其上验证自定义约束。但是,我的自定义约束的验证器要求 Child 类中的字段不为空,否则将引发 NPE。
当我的自定义约束和默认约束都在同一个类上时,我知道我可以使用 GroupSequence 在应用另一组约束之前应用一组约束。
我尝试过的类似嵌套类的设置如下所示:
@MyConstraint(groups = SecondPass)
@GroupSequence([Parent, SecondPass])
class Parent {
@Valid
Child child
}
class Child {
@NotNull
String cannotBeNull
}
请注意,我的示例代码在 Groovy 中。
对于嵌套类,Hibernate 的 ValidatorImpl 似乎试图先将所有指定的组应用于 Parent,然后再应用于 Child。因此,它会在检查 cannotBeNull 是否为 null 之前尝试验证 MyConstraint,如果为 null,则抛出 NPE。
有没有办法让验证器先针对一个组验证整个对象图(在单个验证调用中),然后再验证 GroupSequence 中后续组中的任何约束?
【问题讨论】:
标签: java validation groovy bean-validation hibernate-validator