JSR 303.验证方法参数并抛出异常

时间:2013-02-12 09:40:07

标签: java bean-validation hibernate-validator

如果参数无效,我如何使用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-validator 4.1.0.Final

1 个答案:

答案 0 :(得分:2)

如果您可以升级到Hibernate Validator 4.2.0或更高版本,则可以使用其method validation feature,它为方法参数和返回值的验证提供支持。

在使用诸如动态代理,AOP,拦截器等方法调用约束方法时,可以自动调用验证引擎。根据您使用的框架,您可以使用以下方法:使用以下之一:

请注意,从Bean Validation 1.1(即将完成)及其参考实现Hibernate Validator 5开始,方法验证将成为标准化Bean Validation API的一部分。