@@ -160,12 +160,14 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
160
160
161
161
private String [] requiredFields ;
162
162
163
+ private ConversionService conversionService ;
164
+
165
+ private MessageCodesResolver messageCodesResolver ;
166
+
163
167
private BindingErrorProcessor bindingErrorProcessor = new DefaultBindingErrorProcessor ();
164
168
165
169
private final List <Validator > validators = new ArrayList <Validator >();
166
170
167
- private ConversionService conversionService ;
168
-
169
171
170
172
/**
171
173
* Create a new DataBinder instance, with default object name.
@@ -271,9 +273,14 @@ public void initBeanPropertyAccess() {
271
273
protected AbstractPropertyBindingResult createBeanPropertyBindingResult () {
272
274
BeanPropertyBindingResult result = new BeanPropertyBindingResult (getTarget (),
273
275
getObjectName (), isAutoGrowNestedPaths (), getAutoGrowCollectionLimit ());
276
+
274
277
if (this .conversionService != null ) {
275
278
result .initConversion (this .conversionService );
276
279
}
280
+ if (this .messageCodesResolver != null ) {
281
+ result .setMessageCodesResolver (this .messageCodesResolver );
282
+ }
283
+
277
284
return result ;
278
285
}
279
286
@@ -297,9 +304,14 @@ public void initDirectFieldAccess() {
297
304
protected AbstractPropertyBindingResult createDirectFieldBindingResult () {
298
305
DirectFieldBindingResult result = new DirectFieldBindingResult (getTarget (),
299
306
getObjectName (), isAutoGrowNestedPaths ());
307
+
300
308
if (this .conversionService != null ) {
301
309
result .initConversion (this .conversionService );
302
310
}
311
+ if (this .messageCodesResolver != null ) {
312
+ result .setMessageCodesResolver (this .messageCodesResolver );
313
+ }
314
+
303
315
return result ;
304
316
}
305
317
@@ -494,7 +506,11 @@ public String[] getRequiredFields() {
494
506
* property editor to a new value for a field.
495
507
* <p>Default is "true", exposing previous field values to custom editors.
496
508
* 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
497
512
*/
513
+ @ Deprecated
498
514
public void setExtractOldValueForEditor (boolean extractOldValueForEditor ) {
499
515
getPropertyAccessor ().setExtractOldValueForEditor (extractOldValueForEditor );
500
516
}
@@ -507,7 +523,11 @@ public void setExtractOldValueForEditor(boolean extractOldValueForEditor) {
507
523
* @see DefaultMessageCodesResolver
508
524
*/
509
525
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
+ }
511
531
}
512
532
513
533
/**
0 commit comments