2013-05-25 19 views
1

我想在我的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"; 
} 
+0

顯示觸發異常的代碼 – Jukka

回答

0

你能打印什麼 roleService.getRole(Integer.parseInt(id)) 正在返回。它是否返回無法轉換爲角色對象的字符串。