javax ConstraintViolation:如何识别Set的违规元素?

时间:2015-03-13 16:01:34

标签: java validation constraints

请考虑以下代码:

class A {
  @NotNull String propertyA;
}
class B {
  @Valid java.util.List<A> list;
  @Valid java.util.Map<Integer, A> map;
  @Valid java.util.Set<A> set;
}

B b = ...
ValidatorFactory validatorFactory = Validation
    .buildDefaultValidatorFactory();
Validator validator = validatorFactory.getValidator();
validator.validate(b);

让我们假设list的属性mapsetb都包含A的一个实例propertyA {{1}因此违反了。 null调用的结果会产生一组validate(b),其中包含三个违规行为,其中包含以下ConstraintViolation

PropertyPath

Node{name=list,inIterable=false} -> Node{name=propertyA,inIterable=true,index=0,key=null} Node{name=map,inIterable=false} -> Node{name=propertyA,inIterable=true,index=null,key=0} Node{name=set,inIterable=false} -> Node{name=propertyA,inIterable=true,index=null,key=null} 属性的路径中,第二个节点包含list属性,用于标识index的违规元素。同样,List属性的路径在第二个节点中具有违反的密钥。但是,没有信息在map属性的路径中违反了哪个元素。我希望将违规元素作为set或第三个Node属性key,或类似的东西。

Node.setElement中有多个元素时,如何识别该集合中违反的元素?

0 个答案:

没有答案