JSR303验证常见对象的集合

时间:2011-08-25 07:19:35

标签: java validation collections bean-validation

是否可以根据一个或多个委托验证规则验证集合的每个元素?例如:

@EachElement({@Min(1), @Max(12)})
private Set<Integer> monthNumbers;

2 个答案:

答案 0 :(得分:3)

看一下validator-collection,这个库很容易在一组简单类型上使用任何Constraint Annotation。

@EachMin(1)
@EachMax(12)
private Set<Integer> monthNumbers;

另见https://stackoverflow.com/a/16023061/2217862

答案 1 :(得分:0)

看一下这个答案:Hibernate Validation of Collections of Primitives。这描述了一个适合您的解决方案,但它非常复杂。一个更简单的解决方案可能是为Integer实现一个包装类,并在该类中声明@Min@Max。比你可以使用

@Valid
private Set<MyIntegerWrapper> monthNumbers;

类MyIntegerWrapper:

class MyIntegerWrapper
{
   @Min(1)
   @Max(12)
   Integer myInteger;
}

您可以在此处找到@Valid的一些文档:Object graphs