0

我正在开发一个插件,我需要将 Bean Validator 与底层框架集成,它似乎工作正常,除了在我被击中的地方。

插件将负责为任何符合 JSR303 规范的 Bean Validator 提供桥梁(Hibernate-Validator,Apache Bean 验证器)

一旦出现一些约束违规错误,我需要知道它是什么样的违规行为

  1. 文件级约束
  2. 财产等级
  3. 班级水平

基于此,我需要构建错误消息并需要做一些其他工作。

有什么方法可以找出违反约束的类型,ConstraintViolation<?>以便我可以进行后期处理以准备要在 UI 上显示的内容?

4

1 回答 1

2

有什么方法可以从 ConstraintViolation 中找出违反约束的类型,以便我可以进行后期处理以准备要在 UI 上显示的内容?

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

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

在 Bean Validation 1.1 (JSR 349) 中,事情变得容易一些,因为ConstraintViolation#getPropertyPath()返回的Path包含每个节点的#getElementDescriptor。仍然无法区分如何访问属性(字段与吸气剂)。

于 2012-10-04T09:51:36.627 回答