我正在开发一个通用插件,它有助于基于 JSR303 bean 验证来验证 bean。由于它需要是通用的,所以我不能依赖底层的供应商实现。
我需要从ConstraintViolation对象中确定违反约束的类型。一种方法是使用ConstraintViolation#getPropertyPath()
. 如果getName()
在节点上返回 null,则leaf
您具有类级别约束,否则为属性级别约束。
一种选择是
Iterator<Node> violationNodes=violation.getPropertyPath().iterator();
Node leafNode=null;
while (violationNodes.hasNext()){
leafNode=violationNodes.next();
}
if(leafNode!=null){
// property constraint
}
else{
// class constraint
}
这是确定的好方法还是可以有其他有效或好的方法来做到这一点?