Browse Source

Flexible setMessageCodesResolver and deprecated setExtractOldValueForEditor at DataBinder level

Issue: SPR-15009
pull/1290/head
Juergen Hoeller 9 years ago
parent
commit
307e37a69f
  1. 26
      spring-context/src/main/java/org/springframework/validation/DataBinder.java

26
spring-context/src/main/java/org/springframework/validation/DataBinder.java

@ -160,12 +160,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { @@ -160,12 +160,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
private String[] requiredFields;
private ConversionService conversionService;
private MessageCodesResolver messageCodesResolver;
private BindingErrorProcessor bindingErrorProcessor = new DefaultBindingErrorProcessor();
private final List<Validator> validators = new ArrayList<Validator>();
private ConversionService conversionService;
/**
* Create a new DataBinder instance, with default object name.
@ -271,9 +273,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { @@ -271,9 +273,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
protected AbstractPropertyBindingResult createBeanPropertyBindingResult() {
BeanPropertyBindingResult result = new BeanPropertyBindingResult(getTarget(),
getObjectName(), isAutoGrowNestedPaths(), getAutoGrowCollectionLimit());
if (this.conversionService != null) {
result.initConversion(this.conversionService);
}
if (this.messageCodesResolver != null) {
result.setMessageCodesResolver(this.messageCodesResolver);
}
return result;
}
@ -297,9 +304,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { @@ -297,9 +304,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
protected AbstractPropertyBindingResult createDirectFieldBindingResult() {
DirectFieldBindingResult result = new DirectFieldBindingResult(getTarget(),
getObjectName(), isAutoGrowNestedPaths());
if (this.conversionService != null) {
result.initConversion(this.conversionService);
}
if (this.messageCodesResolver != null) {
result.setMessageCodesResolver(this.messageCodesResolver);
}
return result;
}
@ -494,7 +506,11 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { @@ -494,7 +506,11 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
* property editor to a new value for a field.
* <p>Default is "true", exposing previous field values to custom editors.
* Turn this to "false" to avoid side effects caused by getters.
* @deprecated as of Spring 4.3.5, in favor of customizing this in
* {@link #createBeanPropertyBindingResult()} or
* {@link #createDirectFieldBindingResult()} itself
*/
@Deprecated
public void setExtractOldValueForEditor(boolean extractOldValueForEditor) {
getPropertyAccessor().setExtractOldValueForEditor(extractOldValueForEditor);
}
@ -507,7 +523,11 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { @@ -507,7 +523,11 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
* @see DefaultMessageCodesResolver
*/
public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver) {
getInternalBindingResult().setMessageCodesResolver(messageCodesResolver);
Assert.state(this.messageCodesResolver == null, "DataBinder is already initialized with MessageCodesResolver");
this.messageCodesResolver = messageCodesResolver;
if (this.bindingResult != null && messageCodesResolver != null) {
this.bindingResult.setMessageCodesResolver(messageCodesResolver);
}
}
/**

Loading…
Cancel
Save