Java JSR303 Bean验证,如何知道违反了什么类型约束
我正在开发一个插件,在这个插件中,我需要将Bean Validator与底层框架集成在一起,它似乎工作得很好,只是有一次我被搞砸了 插件将小心地为任何遵守JSR303规范的Bean验证程序(Hibernate验证程序、ApacheBean验证程序)提供桥接 一旦出现了一些约束违反错误,我需要知道它是什么样的违反,它是一个Java JSR303 Bean验证,如何知道违反了什么类型约束,java,validation,bean-validation,hibernate-validator,Java,Validation,Bean Validation,Hibernate Validator,我正在开发一个插件,在这个插件中,我需要将Bean Validator与底层框架集成在一起,它似乎工作得很好,只是有一次我被搞砸了 插件将小心地为任何遵守JSR303规范的Bean验证程序(Hibernate验证程序、ApacheBean验证程序)提供桥接 一旦出现了一些约束违反错误,我需要知道它是什么样的违反,它是一个 场水平约束 属性级别 班级 基于此,我需要构建错误消息,并需要做一些其他工作 有没有办法从ConstraintViolation中找出约束冲突的类型,以便我可以进行后期处理,准
ConstraintViolation
中找出约束冲突的类型,以便我可以进行后期处理,准备在UI上显示的内容
有没有办法从冲突中找出约束的类型
约束Violation,以便我可以进行后期处理以准备
要在UI上显示的内容
不,没有。可以区分类级别约束和特性约束。但是,无法确定注释是放在字段上还是放在属性的getter上
确定类和属性约束之间关系的一种方法是查看ConstraintViolation#getPropertyPath()。如果getName()在叶节点上返回null,则有类级约束,否则为属性级约束
在Bean Validation 1.1(JSR 349)中,事情变得简单了一些,因为ConstraintViolation#getPropertyPath()返回的路径为每个节点都包含一个#getElementDescriptor。仍然无法区分如何访问属性(字段与getter)