Java 确定类和属性之间的约束JSR303 bean验证

Java 确定类和属性之间的约束JSR303 bean验证,java,bean-validation,hibernate-validator,Java,Bean Validation,Hibernate Validator,我正在开发一个通用插件,该插件基于JSR303 bean验证帮助验证bean。 因为它需要是通用的,所以我不能依赖底层的供应商实现 我需要确定对象的约束冲突类型。 一种方法是使用ConstraintViolation#getPropertyPath()。如果getName()在leaf节点上返回null,则表示类级别约束,否则表示属性级别约束 一种选择是 Iterator<Node> violationNodes=violation.getPropertyPath().iterat

我正在开发一个通用插件,该插件基于JSR303 bean验证帮助验证bean。 因为它需要是通用的,所以我不能依赖底层的供应商实现

我需要确定对象的约束冲突类型。 一种方法是使用
ConstraintViolation#getPropertyPath()
。如果
getName()
leaf
节点上返回null,则表示类级别约束,否则表示属性级别约束

一种选择是

 Iterator<Node> violationNodes=violation.getPropertyPath().iterator();
    Node leafNode=null;
    while (violationNodes.hasNext()){
        leafNode=violationNodes.next();
    }

    if(leafNode!=null){
    // property constraint
    }
    else{
     // class constraint
    }
Iterator violationNodes=violation.getPropertyPath().Iterator();
Node-leafNode=null;
while(violationNodes.hasNext()){
leafNode=violationNodes.next();
}
if(leafNode!=null){
//属性约束
}
否则{
//类约束
}

这是一种很好的确定方法,还是有其他有效或很好的方法可以做到这一点?

如果您使用Bean Validation 1.0,那么依赖
Node#getName()
将是一种方法(注意,在If语句中应该是
leafNode.getName()!=null


Bean Validation 1.1添加了一个方法
Node#getKind()
,该方法返回不同元素类型的枚举,因此如果您已经使用1.1,这将是更好的方法。

如果您正在使用Bean Validation 1.0,依赖
Node#getName()
将是最好的方法(注意,在if语句中它应该是
leafNode.getName()!=null


Bean Validation 1.1添加了一个方法
Node#getKind()
返回不同元素类型的枚举,因此如果您已经使用1.1,这将是更好的方法。

目前还不确定,因为哪个版本的
Bean Validation
要使用依赖项取决于我,但我不确定是否所有供应商都支持1.1。如果我回忆正确,Apache Bean validator仍然没有启动th 1.1目前还不确定,因为哪个版本的
Bean Validation
依赖于我,但我不确定是否所有供应商都支持1.1。如果我回忆正确,Apache Bean validator仍然不支持1.1