クラス検証テストに関するHibernateのドキュメントを読んでいますが、「問題」の解決策が見つかりませんでした。カスタムバリデーターをテストしたいと思います。たとえば、次のクラスがあるとします。
public class User {
@NotEmpty(message = "{username.notSpecified}")
private String username;
@NotEmpty
@Size(min = 6, message = "{password.tooShort")
private String password;
@NotEmpty(message = "{city.notSpecified}")
private String city;
/* getters & setters omitted */
}
そして、すべてのユーザーがバルセロナ市にいることを確認したいと思います。そのために、次のようにカスタム ユーザー バリデーターを実装します。
public class UserValidator implements Validator {
@Autowired
private Validator validator;
@Override
public boolean supports(Class<?> clazz) {
return User.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
validator.validate(target,errors);
User user = (User) target;
if(!(user.getCity().equals("Barcelona"))){
errors.rejectValue("city", "city.notValid", "Invalid city");
}
}
}
例で提供されているデフォルトのバリデーターの代わりにこのカスタムバリデーターを使用する方法がわかりません。これは、注釈付きのフィールド制約のみをチェックし、「ビジネスロジック」のものはチェックしません。それに関する例や手がかりはありますか?
ありがとう!