如何解决JSR303验证方法参数并引发异常
如果可以升级到Hibernate Validator 4.2.0或更高版本,则可以使用其方法验证功能,该功能为方法参数和返回值的验证提供支持。
可以使用动态代理,AOP,拦截器等方法在约束方法调用后自动调用验证引擎。根据所使用的框架,您可以使用例如以下一种方法:
- 使用Spring 3.1或更高版本时:MethodValidationInterceptor
- 使用CDI时:Seam Validation(免责声明:我是本文的作者)
- 使用Guice时:在GitHub上添加了一个示例
请注意,从Bean Validation 1.1(即将完成)及其参考实现Hibernate Validator 5开始,方法验证将成为标准化Bean Validation API的一部分。
解决方法
如果参数无效,如何使用JSR-303验证方法参数并引发异常?
例如像这样:public void createUser(@ValidOrThrowException User user) {...}
?
现在,我检查方法主体中的每个方法参数,例如
public void createUser(User user) {
ConstraintViolations violations = Validator.validate(user);
if (!violations.isEmpty()) {
throw new IllegalArgumentException(createExceptionMessage(violations ));
}
...//business logic
}
而且我觉得这很丑。
PS作为参考实现,我使用Hibernate-validator 4.1.0.Final
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。