【发布时间】:2014-10-22 06:17:29
【问题描述】:
我有一些模型类
public class Account {
@Email
private String email;
@NotNull
private String rule;
}
和弹簧验证器
public class AccountValidator implements Validator {
@Override
public boolean supports(Class aClass) {
return Account.class.equals(aClass);
}
@Override
public void validate(Object obj, Errors errors) {
Account account = (Account) obj;
ValidationUtils.rejectIfEmpty(errors, "email", "email.required");
ValidationUtils.rejectIfEmpty(errors, "rule", "rule.required");
complexValidateRule(account.getRule(), errors);
}
private void complexValidateRule(String rule, Errors errors) {
// ...
}
}
我在我的服务中运行
AccountValidator validator = new AccountValidator();
Errors errors = new BeanPropertyBindingResult(account, "account");
validator.validate(account, errors);
我可以在我的验证过程中添加约束@Email、@NotNull (JSR-303) 并且不在 AccountValidator 中描述这些规则吗?
我知道 @Valid 在 spring-controllers 中是如何工作的,但是关于服务层呢?可能吗?如何以适当的方式进行这种验证?我可以使用 Hibernate Validator 吗?
【问题讨论】:
标签: spring bean-validation service-layer spring-validator