Skip to content

Commit 307e37a

Browse files
committed
Flexible setMessageCodesResolver and deprecated setExtractOldValueForEditor at DataBinder level
Issue: SPR-15009
1 parent 8310eb3 commit 307e37a

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

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

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
160160

161161
private String[] requiredFields;
162162

163+
private ConversionService conversionService;
164+
165+
private MessageCodesResolver messageCodesResolver;
166+
163167
private BindingErrorProcessor bindingErrorProcessor = new DefaultBindingErrorProcessor();
164168

165169
private final List<Validator> validators = new ArrayList<Validator>();
166170

167-
private ConversionService conversionService;
168-
169171

170172
/**
171173
* Create a new DataBinder instance, with default object name.
@@ -271,9 +273,14 @@ public void initBeanPropertyAccess() {
271273
protected AbstractPropertyBindingResult createBeanPropertyBindingResult() {
272274
BeanPropertyBindingResult result = new BeanPropertyBindingResult(getTarget(),
273275
getObjectName(), isAutoGrowNestedPaths(), getAutoGrowCollectionLimit());
276+
274277
if (this.conversionService != null) {
275278
result.initConversion(this.conversionService);
276279
}
280+
if (this.messageCodesResolver != null) {
281+
result.setMessageCodesResolver(this.messageCodesResolver);
282+
}
283+
277284
return result;
278285
}
279286

@@ -297,9 +304,14 @@ public void initDirectFieldAccess() {
297304
protected AbstractPropertyBindingResult createDirectFieldBindingResult() {
298305
DirectFieldBindingResult result = new DirectFieldBindingResult(getTarget(),
299306
getObjectName(), isAutoGrowNestedPaths());
307+
300308
if (this.conversionService != null) {
301309
result.initConversion(this.conversionService);
302310
}
311+
if (this.messageCodesResolver != null) {
312+
result.setMessageCodesResolver(this.messageCodesResolver);
313+
}
314+
303315
return result;
304316
}
305317

@@ -494,7 +506,11 @@ public String[] getRequiredFields() {
494506
* property editor to a new value for a field.
495507
* <p>Default is "true", exposing previous field values to custom editors.
496508
* Turn this to "false" to avoid side effects caused by getters.
509+
* @deprecated as of Spring 4.3.5, in favor of customizing this in
510+
* {@link #createBeanPropertyBindingResult()} or
511+
* {@link #createDirectFieldBindingResult()} itself
497512
*/
513+
@Deprecated
498514
public void setExtractOldValueForEditor(boolean extractOldValueForEditor) {
499515
getPropertyAccessor().setExtractOldValueForEditor(extractOldValueForEditor);
500516
}
@@ -507,7 +523,11 @@ public void setExtractOldValueForEditor(boolean extractOldValueForEditor) {
507523
* @see DefaultMessageCodesResolver
508524
*/
509525
public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver) {
510-
getInternalBindingResult().setMessageCodesResolver(messageCodesResolver);
526+
Assert.state(this.messageCodesResolver == null, "DataBinder is already initialized with MessageCodesResolver");
527+
this.messageCodesResolver = messageCodesResolver;
528+
if (this.bindingResult != null && messageCodesResolver != null) {
529+
this.bindingResult.setMessageCodesResolver(messageCodesResolver);
530+
}
511531
}
512532

513533
/**

0 commit comments

Comments
 (0)