JSR-303 Validator will only register validation failures if no binding failure happened

This commit is contained in:
Juergen Hoeller 2009-11-07 01:29:50 +00:00
parent 4e233047c8
commit 205b5a477b
1 changed files with 9 additions and 4 deletions

View File

@ -22,6 +22,7 @@ import javax.validation.metadata.BeanDescriptor;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.validation.Errors; import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springframework.validation.Validator; import org.springframework.validation.Validator;
/** /**
@ -68,12 +69,16 @@ public class SpringValidatorAdapter implements Validator, javax.validation.Valid
public void validate(Object target, Errors errors) { public void validate(Object target, Errors errors) {
Set<ConstraintViolation<Object>> result = this.targetValidator.validate(target); Set<ConstraintViolation<Object>> result = this.targetValidator.validate(target);
for (ConstraintViolation<Object> violation : result) { for (ConstraintViolation<Object> violation : result) {
errors.rejectValue(violation.getPropertyPath().toString(), String field = violation.getPropertyPath().toString();
FieldError fieldError = errors.getFieldError(field);
if (fieldError == null || !fieldError.isBindingFailure()) {
errors.rejectValue(field,
violation.getConstraintDescriptor().getAnnotation().annotationType().getSimpleName(), violation.getConstraintDescriptor().getAnnotation().annotationType().getSimpleName(),
violation.getConstraintDescriptor().getAttributes().values().toArray(), violation.getConstraintDescriptor().getAttributes().values().toArray(),
violation.getMessage()); violation.getMessage());
} }
} }
}
//--------------------------------------------------------------------- //---------------------------------------------------------------------