1

如果参数无效,如何使用 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

4

1 回答 1

1

如果可以升级到 Hibernate Validator 4.2.0 或更高版本,就可以使用它的方法验证功能,它提供了对方法参数和返回值的验证的支持。

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

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

于 2013-02-12T11:06:26.480 回答