Browse Source

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

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2287 50f2f4bb-b051-0410-bef5-90022cba6387
pull/1/head
Juergen Hoeller 16 years ago
parent
commit
56d6666fb6
  1. 13
      org.springframework.context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java

13
org.springframework.context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java

@ -22,6 +22,7 @@ import javax.validation.metadata.BeanDescriptor; @@ -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 @@ -68,10 +69,14 @@ public class SpringValidatorAdapter implements Validator, javax.validation.Valid
public void validate(Object target, Errors errors) {
Set<ConstraintViolation<Object>> result = this.targetValidator.validate(target);
for (ConstraintViolation<Object> 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());
}
}
}

Loading…
Cancel
Save