我想在我的Spring web應用程序中使用Converter。下面是代碼:Spring看不到轉換器
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]財產「角色」:沒有 匹配編輯或轉換策略]
請幫助我認識到我做錯了什麼。我已經花費約16小時來解決這個問題,但沒有任何幫助:(
UPD 確定這裏是發生了什麼事情的簡短解釋:我有用戶類,它包含角色類(一到多)和要編寫JSP,它允許創建用戶與角色和我使用的下拉菜單進行選擇角色:
<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來獲得角色 引起異常的方法代碼非常簡單:
@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";
}
顯示觸發異常的代碼 – Jukka