我正在尝试在Spring Web应用程序中使用Converter。这是代码:
public class RoleConverter implements Converter<String, Role> {
@Autowired
private RoleService roleService;
public Role convert(String id) {
return roleService.getRole(Integer.parseInt(id));
}
}
我配置了相应的xml:
<mvc:annotation-driven conversion-service="conversionService" />
<beans:bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<beans:property name="converters">
<beans:set>
<beans:bean class="net.schastny.contactmanager.converters.RoleConverter"/>
</beans:set>
</beans:property>
</beans:bean>
我也尝试使用class="org.springframework.context.support.ConversionServiceFactoryBean"
代替
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
但没有任何帮助。我总是得到一个例外:
无法将[java.lang.String]类型的值转换为所需类型 [net.schastny.contactmanager.domain.Role]属性'role':没有 找到匹配的编辑器或转换策略]
请帮助我认识一下我做错了什么。我花了大约16个小时来解决问题,但没有任何帮助:(
UPD 好的,这里有简短的解释:我有User类,其中包含Role类(一对多),并希望编写允许创建User with Role的jsp,并使用dropdown选择Role:
<form:form method="post" action="add" commandName="user">
Login: <form:input path = "login" value = "" />
Password: <form:input path = "password" value = "" />
Select role:
<form:select path="role">
<form:options items="${roleList}" itemValue="id" itemLabel="description"/>
</form:select>
<input type="submit" value = "add">
</form:form>
所以我的想法是,在提交后我有角色的Id,所以我想通过它的Id使用Converter获得角色。 导致异常的方法代码非常简单:
@RequestMapping("/add")
public String home(@ModelAttribute User user) {
System.out.println(user.getRole().getDescription());
System.out.println(user.getLogin());
System.out.println(user.getPassword());
return "redirect:/index";
}
答案 0 :(得分:0)
你能打印什么吗? roleService.getRole(的Integer.parseInt(ID)) 正在回归它是否返回一个无法转换为角色对象的字符串。
答案 1 :(得分:0)
所以几个小时后我的头靠在墙上,我找到了解决办法。这里是: spring 3.0 Custom generic converter not found though registered.Error: no matching editors or conversion strategy found 我有同样的问题。希望有人不会花20个小时来解决它:)