1
如何使用JSR-303验证方法参数并在参数无效时抛出异常?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
}
,我认为这是丑陋的。
P.S.作为参考实现,我使用Hibernate验证程序4.1.0.Final
谢谢。所以它意味着用@ Valid语句注释的参数本身不会抛出异常,如果对象是无效的?我需要手动创建一个方面(AOP),'@pointcut'指向方法参数中的所有'@ Valid'注解?当发现这样的注释时,我需要创建'Validator'实例并手动验证用'@ Valid'注释的方法参数值? – MyTitle 2013-02-12 11:47:51
难道你没有AspectJ的例子吗? – MyTitle 2013-02-12 11:51:37
我不幸没有使用AspectJ的例子。但是一般方法应该与GitHub上的示例项目相同:拦截调用,验证参数,继续调用,验证返回值,如果任一验证步骤失败,则抛出'ConstraintViolationException'。 – Gunnar 2013-02-12 14:34:02