Другой причиной, помимо упомянутой skaffman, является установка собственного валидатора в вашем WebDataBinder. Обычно я использую валидацию bean-компонента JSR-303, а затем связываю валидатор, который обеспечивает дополнительную валидацию, не предоставляемую JSR-303.
Внутри вашего контроллера:
@InitBinder
protected void initBinder(WebDataBinder webDataBinder) {
Validator validator = webDataBinder.getValidator();
webDataBinder.setValidator(new UserFormValidator(validator));
}
Что я делаю, так это беру в себя валидатор бина, вызываю его внутри моего пользовательского валидатора, а затем вызываю мои пользовательские валидации. Как то так:
public class UserFormValidator implements Validator {
private Validator validator;
public AuthUserFormValidator(Validator validator) {
this.validator = validator;
}
@Override
public boolean supports(Class<?> clazz) {
return UserForm.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
// Run the bean validation...
validator.validate(target, errors);
// Do your custom validation on userForm here...
UserForm userForm = (UserForm) target;
// Validation on userForm...
}
}