我阅读了许多关于JSR 303规范的教程,但我没有看到任何准备好用于生产的示例。每个地方都描述了如何获取Set<Constraintviolation<T>>
对象。
例如:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<Car>> violations = validator.validate(car);
但是接下来应该怎么办? 我想要通知方法调用者(客户端)该方法参数所处的状态不一致。
我该如何处理Set<ConstraintViolation<Car>>
?我需要手动遍历Set<ConstraintViolation>
,将所有错误信息收集到一个字符串中,然后抛出带有这些错误信息的异常吗?
还是存在一些更方便的开箱即用的方法吗?
或者在每个bean内提供validate
方法会更好吗?
throws BeanValidationException
这样的签名是好还是坏?或者将其包装成服务层特定的异常会更好(但如果我包装它们,那么我就无法实现你提到的“将约束违规设置为异常属性”这个功能,因为我的服务层异常没有这样的属性)? - WelcomeTo