2014-07-25 5 views
1

내 프로젝트에서 구동되는 스프링 mvc 주석을 사용하도록 설정했습니다.

Caused by: javax.servlet.jsp.JspException: Type [java.lang.String] is not valid for option items 

내 컨트롤러 :

@RequestMapping(method = RequestMethod.GET) 
public String show(@ModelAttribute("form") AccessForm form, Map<String, Object> model) throws IOException { 
    AccessSettings settings = getAccessSettings(); 
    form.setAlertSettings(settings.getAlertSettings()); 
    form.setMaxFrequency(settings.getMaxFrequency()); 
    return "page"; 
} 

public class AccessForm{ 

    public List<Long> getList() { 
     // some custom logic that generate long items 
    } 
} 

<spring:bind path="list"> 
     <form:select path="mMaxFrequency"> 
      <form:options items="${status.value}"/> 
     </form:select> 
    </spring:bind> 

JSP 페이지를 렌더링하는 동안, 나는 다음과 같은 예외가 있어요 : 스프링 태그로 이전에 작동하지 않습니다 후 어떤 아이디어가 잘못 되었나요? 항목 내에서 사용 @ 피터의 코멘트를 추가

+1

항목이 복수 인 경우, 'status.value'는 단수를 반환합니다. –

+0

네,하지만 주석 구동의 활성화와 이전에 작동 한 이유를 설명 할 수 있습니까? – fashuser

+0

@fashuser 당신의 JSP는 컨트롤러 나 서비스 클래스에서 오해 할 수있는 주석 때문에 영향을받지 않습니다. 명확한 대답을 얻기 위해 그것들을 공유하십시오 –

답변

2

,

"${status.value}"는 반환 String 때문이다. 옵션 태그 안의 items 속성은 list을 기대합니다. 그것의 예외에서 아주 명확하다.

list에 적절한 방법으로 항목을 추가하고 있는지 확인하십시오. 당신이 매번 같은 인스턴스를 오버라이드하고있는 것 같아요.

+0

나는 긴 항목의 목록 반환 목록, 즉 다음 값 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16을 두 번 확인했습니다. 17,18,19,20. jsp와 컨트롤러의 구현이 변경되지 않았으므로 어느 위치에서 재정의 할 수 있는지 설명해 주시겠습니까 – fashuser

+0

JSP가 변경되지 않았습니까? 목록을 반복하기위한 노력을 찾지 못했습니다. –

+0

예, JSP는 변경되지 않았습니다. 하지만 디버깅 후 나는 내 목록이 ConversionService를 통해 문자열로 변환되는 것을 알아 챘다. 다음 서비스는 주석 구동이 활성화되기 전에 null입니다. – fashuser

관련 문제