2013-05-25 3 views
1

스프링 웹 응용 프로그램에서 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] 재산의 역할 '에 대한 : 없음 일치 편집자 또는 전환 전략 발견]

내가 잘못하고있는 것을 인식하도록 도와주세요. 나는이 문제를 해결하기 위해 약 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)) 이 반환됩니다. 역할 객체로 변환 할 수없는 문자열을 반환하고 있습니까?

관련 문제