给定以下类和接口
class Person {
@NotNull(groups=Both.class)
private String name;
}
验证组:
interface One {}
interface Two {}
interface Both extends One, Two {}
打电话时
Person person = new Person();
validator.validate(person, One.class)
要么
validator.validate(person, Two.class)
我希望它应该是无效的,因为名称为null,但不是。
事实证明,组Both.class仅在validator.validate(...,Both.class)方法中使用时才有用。
最佳答案
您的继承方向错误。 Both
组扩展了One
和Two
您可能会认为它是“ Both
包含One
和Two
”。这意味着,每次对Both
组进行验证时,组One
和Two
的所有约束也都包含在Both
中,并因此得到验证。
但是反之则不成立:属于组Both
的约束也不是One
的一部分,也不是Two
的一部分。因此,如果您验证组One
的约束,则不验证属于Both的约束。
请参阅http://beanvalidation.org/1.1/spec/#constraintdeclarationvalidationprocess-groupsequence-groupinheritance作为参考。