Nim*_*sky 5 java spring spring-mvc
这是我的表格:
<form:form modelAttribute="fooDTO">
fooCountry:
<form:select path="country">
<form:options items="${countries}" itemLabel="shortName" itemValue="id"/>
</form:select>
Run Code Online (Sandbox Code Playgroud)
这是支持pojo:
public class FooDTO
{
private Country country;
//getters and setters present
}
Run Code Online (Sandbox Code Playgroud)
所选选项默认为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
}
}
Run Code Online (Sandbox Code Playgroud)
然后在 xml 配置中配置转换器
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="my.converter.StringToCountry"/>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
正如 GriffeyDog 指出的那样,您可能希望将国家/地区 ID 放入选择路径中,以便您可以通过 ID 或其他内容获取国家/地区,而不是通过国家/地区对象的 toString() 返回的任何内容。