Spring表格绑定怎么办?无法将类型[java.lang.String]的值转换为必需的类型
问题内容:
这是我的表格:
<form:form modelAttribute="fooDTO">
fooCountry:
<form:select path="country">
<form:options items="${countries}" itemLabel="shortName" itemValue="id"/>
</form:select>
这是pojo的支持:
public class FooDTO
{
private Country country;
//getters and setters present
}
所选选项默认为fooDTO中的国家/地区值,这很好。但是,提交表单时,绑定会失败-
我遇到上述错误,是否必须在绑定器中注册自定义编辑器,或者是否有更简单的方法?国家几乎是您所期望的,国家确实是控制器中填充的国家列表…
问题答案:
Spring 3引入了Converter
SPI,这使得这非常容易。看一下文档中的6.5
从文档中获取资料并放入您的国家/地区,您会做类似的事情
package my.converter;
final class StringToCountry implements Converter<String, Country> {
public Country convert(String source) {
return // whatever you do to get a country from your string
}
}
然后在xml配置中,您将配置转换器
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="my.converter.StringToCountry"/>
</list>
</property>
</bean>
正如GriffeyDog指出的那样,您可能希望将国家ID放入选择路径,以便可以通过ID或其他方式(而不是Country对象的toString()返回的值)获得Country。