有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我需要从ConstraintViolation对象确定约束冲突的类型。 一种方法是使用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
    }

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


共 (1) 个答案

  1. # 1 楼答案

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

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