diff --git a/org.springframework.context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java b/org.springframework.context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java index 60649a37a8b..43fa046ee57 100644 --- a/org.springframework.context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java +++ b/org.springframework.context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java @@ -22,6 +22,7 @@ import javax.validation.metadata.BeanDescriptor; import org.springframework.util.Assert; import org.springframework.validation.Errors; +import org.springframework.validation.FieldError; import org.springframework.validation.Validator; /** @@ -68,10 +69,14 @@ public class SpringValidatorAdapter implements Validator, javax.validation.Valid public void validate(Object target, Errors errors) { Set> result = this.targetValidator.validate(target); for (ConstraintViolation violation : result) { - errors.rejectValue(violation.getPropertyPath().toString(), - violation.getConstraintDescriptor().getAnnotation().annotationType().getSimpleName(), - violation.getConstraintDescriptor().getAttributes().values().toArray(), - violation.getMessage()); + 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().getAttributes().values().toArray(), + violation.getMessage()); + } } }