2012-10-04 57 views
0

我正在研究一个插件,我需要将Bean Validator与底层框架集成,并且它似乎能够正常工作,除了在被攻击的地方。JSR303 Bean验证,如何知道类型约束被违反

插件会照顾提供任何豆验证桥谁坚持JSR303规范(休眠-验证,阿帕奇豆验证)

一旦有一些约束违规错误,我需要知道什么样的违反是就像是它

  1. 提起级约束
  2. 属性级别
  3. 职业等级

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

有没有什么办法从ConstraintViolation<?>找出约束违规的类型,这样我就可以做后处理来准备显示在UI上的东西了?

回答

1

有没有办法从 ConstraintViolation找出约束违规的类型,这样我可以做后期处理准备 事情上显示的用户界面?

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

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

在Bean验证1.1(JSR 349),事情变得更容易一些,因为路径通过ConstraintViolation#getPropertyPath(返回)包含每个节点的#getElementDescriptor。仍然没有办法区分属性如何被访问(字段与getter)。