diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 055eee2330a..ced69a4a0e8 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -24,7 +24,6 @@ import java.lang.reflect.Field; import java.util.Collection; import java.util.Iterator; import java.util.Map; -import java.util.Arrays; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/org.springframework.context/src/main/java/org/springframework/ui/format/support/GenericFormatterRegistry.java b/org.springframework.context/src/main/java/org/springframework/ui/format/support/GenericFormatterRegistry.java index 2f48584facf..ffeb83f63f7 100644 --- a/org.springframework.context/src/main/java/org/springframework/ui/format/support/GenericFormatterRegistry.java +++ b/org.springframework.context/src/main/java/org/springframework/ui/format/support/GenericFormatterRegistry.java @@ -187,18 +187,19 @@ public class GenericFormatterRegistry implements FormatterRegistry, ApplicationC if (formattedObjectType != null && !type.isAssignableFrom(formattedObjectType)) { if (this.conversionService == null) { throw new IllegalStateException("Unable to index Formatter " + formatter + " under type [" - + type.getName() + "]; unable to convert from [" + formattedObjectType.getName() - + "] parsed by Formatter because this.conversionService is null"); + + type.getName() + "]; not able to convert from a [" + formattedObjectType.getName() + + "] parsed by the Formatter to [" + type.getName() + + "] because this.conversionService is null"); } if (!this.conversionService.canConvert(formattedObjectType, type)) { throw new IllegalArgumentException("Unable to index Formatter " + formatter + " under type [" - + type.getName() + "]; not able to convert from [" + formattedObjectType.getName() - + "] to parse"); + + type.getName() + "]; not able to convert from a [" + formattedObjectType.getName() + + "] parsed by the Formatter to [" + type.getName() + "]"); } if (!this.conversionService.canConvert(type, formattedObjectType)) { throw new IllegalArgumentException("Unable to index Formatter " + formatter + " under type [" + type.getName() + "]; not able to convert to [" + formattedObjectType.getName() - + "] to format"); + + "] to format a [" + type.getName() + "]"); } } this.typeFormatters.put(type, new FormatterHolder(formattedObjectType, formatter)); diff --git a/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java b/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java index 5626d8f22f4..f11deec4c1d 100644 --- a/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java +++ b/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java @@ -35,6 +35,7 @@ import org.springframework.beans.SimpleTypeConverter; import org.springframework.beans.TypeConverter; import org.springframework.beans.TypeMismatchException; import org.springframework.core.MethodParameter; +import org.springframework.core.convert.support.DefaultConversionService; import org.springframework.ui.format.FormatterRegistry; import org.springframework.ui.format.support.FormattingConversionServiceAdapter; import org.springframework.ui.format.support.GenericFormatterRegistry; @@ -478,7 +479,9 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { */ public FormatterRegistry getFormatterRegistry() { if (this.formatterRegistry == null) { - this.formatterRegistry = new GenericFormatterRegistry(); + GenericFormatterRegistry registry = new GenericFormatterRegistry(); + registry.setConversionService(new DefaultConversionService()); + this.formatterRegistry = registry; } else if (this.formatterRegistry instanceof GenericFormatterRegistry && ((GenericFormatterRegistry) this.formatterRegistry).isShared()) { diff --git a/org.springframework.context/src/test/java/org/springframework/validation/DataBinderTests.java b/org.springframework.context/src/test/java/org/springframework/validation/DataBinderTests.java index 698753735ef..38d3707218c 100644 --- a/org.springframework.context/src/test/java/org/springframework/validation/DataBinderTests.java +++ b/org.springframework.context/src/test/java/org/springframework/validation/DataBinderTests.java @@ -343,7 +343,8 @@ public class DataBinderTests extends TestCase { private void doTestBindingWithDefaultFormatter(Object tb) { DataBinder binder = new DataBinder(tb); - binder.setFormatterRegistry(new GenericFormatterRegistry()); + // force formatter registry to be created + binder.getFormatterRegistry(); MutablePropertyValues pvs = new MutablePropertyValues(); pvs.addPropertyValue("number", "1,2");