4
我有一些模型類如何在服務層中結合JSR-303和Spring Validator類?
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中描述這些規則?
我知道如何在spring控制器中使用@Valid,但是服務層是怎麼回事?可能嗎?如何以適當的方式進行這種驗證?我應該使用Hibernate驗證器嗎?