From 5f9b2db90bb0716b87d10bc5a1dbfe63a6b719cc Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 7 Jun 2010 22:30:11 +0000 Subject: [PATCH] turn NotReadablePropertyException into JSR-303 oriented IllegalStateException --- .../beanvalidation/SpringValidatorAdapter.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) 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 3b286bde07a..79822ddb42e 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import javax.validation.ConstraintViolation; import javax.validation.metadata.BeanDescriptor; import javax.validation.metadata.ConstraintDescriptor; +import org.springframework.beans.NotReadablePropertyException; import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.util.Assert; import org.springframework.validation.Errors; @@ -76,10 +77,17 @@ public class SpringValidatorAdapter implements Validator, javax.validation.Valid String field = violation.getPropertyPath().toString(); FieldError fieldError = errors.getFieldError(field); if (fieldError == null || !fieldError.isBindingFailure()) { - errors.rejectValue(field, - violation.getConstraintDescriptor().getAnnotation().annotationType().getSimpleName(), - getArgumentsForConstraint(errors.getObjectName(), field, violation.getConstraintDescriptor()), - violation.getMessage()); + try { + errors.rejectValue(field, + violation.getConstraintDescriptor().getAnnotation().annotationType().getSimpleName(), + getArgumentsForConstraint(errors.getObjectName(), field, violation.getConstraintDescriptor()), + violation.getMessage()); + } + catch (NotReadablePropertyException ex) { + throw new IllegalStateException("JSR-303 validated property '" + field + + "' does not have a corresponding accessor for Spring data binding - " + + "check your DataBinder's configuration (bean property versus direct field access)", ex); + } } } }