私はいくつかのモデルクラスを持っています
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 がどのように機能するかは知っていますが、サービスレイヤーについてはどうですか? 出来ますか?そのような種類の検証を適切な方法で行うにはどうすればよいですか? Hibernate Validator を使用する必要がありますか?