MyT*_*tle 6 java hibernate-validator bean-validation
我阅读了很多关于JSR 303规范的教程,但是我没有看到任何准备好生产的例子.到处都描述了如何获得Set<Constraintviolation<T>>对象.
例:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<Car>> violations = validator.validate(car);
Run Code Online (Sandbox Code Playgroud)
但接下来呢?我想通知方法调用者(客户端)方法参数处于不一致状态.
我必须做Set<ConstraintViolation<Car>>什么?我需要手动迭代 Set<ConstraintViolation>,将所有错误消息收集到一个字符串中,然后使用此消息抛出异常?
或者存在一些开箱即用的方便方式?
或者最好validate在每个bean中提供方法?
我会同意你的第一个建议 - 迭代约束违规。您不必创建包含所有这些内容的错误消息。仅显示一条错误消息bean <bean> is not valid并将约束违规设置为异常的属性可能是一个好主意。
也许您需要将约束违规转换为另一个对象,因为否则您的应用程序的大部分内容都会依赖于 bean 验证 api。这可能是一个太强的耦合。
您的问题是,如何处理违反约束的情况是非常具体的用例。在很多情况下,您不想通知调用者有关约束违规的信息,而是通知其他对象。例如,在 Web 表单中,您希望通知视图模型它还应该显示这些约束违规情况。抛出异常是另一回事。请注意,这在大多数情况下都不是ConstraintViolationException,而是特定于应用程序的例外。
| 归档时间: |
|
| 查看次数: |
4502 次 |
| 最近记录: |