【发布时间】:2012-06-08 14:43:37
【问题描述】:
我正在努力定义我的 jsr 303 验证规则,即为我的容器 bean 重新定义默认组。
@GroupSequence({Container.class, Container.Step2.class})
public class Container {
@NotNull
private String def;
@Valid
@Size(min = 20, groups = Container.Step2.class)
private List<Element> elems = new LinkedList<Element>();
public interface Step2{}
}
public class Element{
@NotNull
private String foo;
}
我希望验证容器 bean 的大小当且仅当:
- def 属性有效
- 没有任何带有 elems 集合的 Elements bean 的验证错误
如果我使用默认组验证容器:
Container c = new Container();
...
validator.validate(c)
即使内部元素 bean 存在验证错误,也会触发大小验证器。
如果我从容器类中删除 @GroupSequence(跳过重新定义容器的默认组)并将自己的 GroupSequence 定义为:
@GroupSequence({Default.class, Container2.Step2.class})
public interface AllValid{}
然后使用 AllValid 组进行验证:
Container c = new Container();
...
validator.validate(c, Container2.AllValid.class);
一切都按预期进行。 有什么想法吗?
【问题讨论】:
标签: bean-validation