28
28
import org .springframework .beans .InvalidPropertyException ;
29
29
import org .springframework .beans .MutablePropertyValues ;
30
30
import org .springframework .beans .PropertyValue ;
31
+ import org .springframework .core .convert .ConversionService ;
31
32
import org .springframework .core .convert .TypeDescriptor ;
32
33
import org .springframework .util .StringUtils ;
33
34
import org .springframework .validation .DataBinder ;
@@ -47,6 +48,8 @@ public class RelaxedDataBinder extends DataBinder {
47
48
48
49
private boolean ignoreNestedProperties ;
49
50
51
+ private ConversionService relaxedConversionService ;
52
+
50
53
/**
51
54
* Create a new {@link RelaxedDataBinder} instance.
52
55
* @param target the target into which properties are bound
@@ -76,12 +79,19 @@ public void setIgnoreNestedProperties(boolean ignoreNestedProperties) {
76
79
this .ignoreNestedProperties = ignoreNestedProperties ;
77
80
}
78
81
82
+ @ Override
83
+ public void setConversionService (ConversionService conversionService ) {
84
+ super .setConversionService (conversionService );
85
+ this .relaxedConversionService = new RelaxedConversionService (getConversionService ());
86
+ }
87
+
79
88
@ Override
80
89
public void initBeanPropertyAccess () {
81
90
super .initBeanPropertyAccess ();
91
+ this .relaxedConversionService = (this .relaxedConversionService != null
92
+ ? this .relaxedConversionService : new RelaxedConversionService (getConversionService ()));
82
93
// Hook in the RelaxedConversionService
83
- getInternalBindingResult ().initConversion (
84
- new RelaxedConversionService (getConversionService ()));
94
+ getInternalBindingResult ().initConversion (relaxedConversionService );
85
95
}
86
96
87
97
@ Override
@@ -111,6 +121,7 @@ private MutablePropertyValues modifyProperties(MutablePropertyValues propertyVal
111
121
}
112
122
113
123
BeanWrapper targetWrapper = new BeanWrapperImpl (target );
124
+ targetWrapper .setConversionService (this .relaxedConversionService );
114
125
targetWrapper .setAutoGrowNestedPaths (true );
115
126
116
127
List <PropertyValue > list = propertyValues .getPropertyValueList ();
@@ -189,7 +200,6 @@ private String initializePath(BeanWrapper wrapper, BeanPath path, int index) {
189
200
TypeDescriptor descriptor = wrapper .getPropertyTypeDescriptor (name );
190
201
if (descriptor == null || descriptor .isMap ()) {
191
202
if (descriptor != null ) {
192
- wrapper .getPropertyValue (name + "[foo]" );
193
203
TypeDescriptor valueDescriptor = descriptor .getMapValueTypeDescriptor ();
194
204
if (valueDescriptor != null ) {
195
205
Class <?> valueType = valueDescriptor .getObjectType ();
0 commit comments