Java JSR303 Bean验证,如何知道违反了什么类型约束

Java JSR303 Bean验证,如何知道违反了什么类型约束,java,validation,bean-validation,hibernate-validator,Java,Validation,Bean Validation,Hibernate Validator,我正在开发一个插件,在这个插件中,我需要将Bean Validator与底层框架集成在一起,它似乎工作得很好,只是有一次我被搞砸了 插件将小心地为任何遵守JSR303规范的Bean验证程序(Hibernate验证程序、ApacheBean验证程序)提供桥接 一旦出现了一些约束违反错误,我需要知道它是什么样的违反,它是一个 场水平约束 属性级别 班级 基于此,我需要构建错误消息,并需要做一些其他工作 有没有办法从ConstraintViolation中找出约束冲突的类型,以便我可以进行后期处理,准

我正在开发一个插件,在这个插件中,我需要将Bean Validator与底层框架集成在一起,它似乎工作得很好,只是有一次我被搞砸了

插件将小心地为任何遵守JSR303规范的Bean验证程序(Hibernate验证程序、ApacheBean验证程序)提供桥接

一旦出现了一些约束违反错误,我需要知道它是什么样的违反,它是一个

  • 场水平约束
  • 属性级别
  • 班级
  • 基于此,我需要构建错误消息,并需要做一些其他工作

    有没有办法从
    ConstraintViolation
    中找出约束冲突的类型,以便我可以进行后期处理,准备在UI上显示的内容

    有没有办法从冲突中找出约束的类型 约束Violation,以便我可以进行后期处理以准备 要在UI上显示的内容

    不,没有。可以区分类级别约束和特性约束。但是,无法确定注释是放在字段上还是放在属性的getter上

    确定类和属性约束之间关系的一种方法是查看ConstraintViolation#getPropertyPath()。如果getName()在叶节点上返回null,则有类级约束,否则为属性级约束

    在Bean Validation 1.1(JSR 349)中,事情变得简单了一些,因为ConstraintViolation#getPropertyPath()返回的路径为每个节点都包含一个#getElementDescriptor。仍然无法区分如何访问属性(字段与getter)