我有2个课程:
@Data
public static class Inner {
@NotNull
private String innerField;
}
@Data
@OuterClasslevelConstraints
public static class Outer {
@NotNull
private String outerField;
@Valid
private Inner inner;
}
@Data
是lombok注释,@NotNull
和@Valid
是javax.validation。
@OuterClasslevelConstraints
是由我的自定义验证程序验证的自定义类级别约束注释。它使用内部和外部类中的字段进行验证。
目标是验证内部和外部的每个字段,并且只有在一切正常的情况下,才运行类级验证器。
如果outerField
是null
,则类级验证程序未运行-这就是我想要的。
但是,如果innerField
为空(并且outerField
不是null
),则类级验证器将运行并失败,因为我的类级验证器实际上是依靠{{ 1}}不是innerField
。
我尝试使用null
定义验证组序列,但是没有运气-无法将显式组设置为@GroupSequence
,并且总是在外部类级别验证之后运行。
也许这种情况太复杂了,无法用javax.validation实现,我应该在其他地方进行类级验证吗?