【问题标题】:JSR303 Bean Validation,how to know what Type constraint is being violatedJSR303 Bean Validation,如何知道违反了什么类型约束
【发布时间】:2012-10-04 02:37:41
【问题描述】:

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

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

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

  1. 文件级约束
  2. 属性级别
  3. 班级等级

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

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

【问题讨论】:

    标签: java validation bean-validation hibernate-validator


    【解决方案1】:

    有什么方法可以从 ConstraintViolation,以便我可以进行后期处理以准备 在 UI 上显示的东西?

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

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

    在 Bean Validation 1.1 (JSR 349) 中,事情变得更容易了,因为 ConstraintViolation#getPropertyPath() 返回的 Path 包含每个节点的 #获取元素描述符。仍然无法区分如何访问属性(字段与 getter)。

    【讨论】:

      猜你喜欢
      • 2015-07-13
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多