鉴于课程:
class Foo {
@Size(max = 1)
@Valid
private List<Bar> bars;
}
class Bar {
@NotBlank
private String snafu;
}
如何应用验证,以防止在Foo.bars上的Size约束失败时验证Bar.snafu?
我虽然可以通过组转换和组序列的定义实现这一点。但我没能按照我想要的方式配置它。
即使它看起来如此,定义失败快速是不一个选项。
答案 0 :(得分:1)
以下解决了这个问题:
interface Advanced {}
@GroupSequence({Default.class, Advanced.class})
interface Sequence {}
class Foo {
@Size(max = 1)
@Valid
private List<Bar> bars;
}
class Bar {
@NotBlank(groups = Advanced.class)
private String snafu;
}
Foo foo = new Foo();
foo.bars = new ArrayList<Bar>();
foo.bars.add(new Bar());
foo.bars.add(new Bar());
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Foo>> constraintViolations = validator.validate(foo, Sequence.class)
现在,如果允许更多Bar实例(大小约束),则仅生成大小约束的约束违反。