2009-08-24 4 views
0

코드가 있습니다! 코드는 다음과 같습니다Struts forEach 태그는 ArrayList를 반복하지 않습니다.

<c:forEach var="element" items="%{serviceList.getServices()}"> 
     <p>Hello!</p> 
</c:forEach> 

는 "하고 ServiceList는"빈입니다 방법으로는 getServices라고에(). getServices()는 ArrayList를 반환하므로 자연스럽게 위의 코드가 arraylist를 취하고 목록의 각 요소를 'element'변수에 넣는 것을 반복합니다.

그렇지 않습니다! . 내가 페이지를 볼 때, 안녕하세요이 getServices의 (크기가() 2 번 인쇄됩니다, 나는 페이지에 그것을 밖으로 인쇄하여 직접 표시 할 수 있습니다

를 태그 자체가 작동합니다

<c:forEach begin="1" end="10">Hello, World!<br></c:forEach> 

무엇을 기대할지를 출력합니다. 내가 전달하는 항목과 관련이 있어야합니다. 어떤 도움이 필요합니까? 어떤 도움도?

아, 그리고 JSTL 1.1.2, Struts 2.1.6 및 최신 버전을 사용하고 있습니다.

+1

당신은 Struts의 일부가 아닌 forEach 용 jstl-core 태그를 사용하고 있습니다. Struts 태그 는 동일한 기능을 제공합니다. – Salandur

답변

4

오타가 있습니다. 다음과 같이 ${variable name}을 사용해야합니다.

<c:forEach var="element" items="${serviceList.services}"> 
    <p>Hello!</p> 
</c:forEach> 

그러면 예상대로 동작합니다.

+0

EL (JSP 2.1 현재)에서는 인스턴스에서 메소드를 호출 할 수 없습니다. 사용자 정의 함수는 정적 메서드로만 매핑 할 수 있습니다. (더 나은 방법 지원은 JEE6 외에도있다.) – McDowell

+0

@McDowell - 고마워, 그냥 질문에서 복사 해 - 나는 그것을 수정하고 바로 잡을 것이다. –

0
${serviceList.services} 

표현식 언어 구문이 잘못되었습니다. 자세한 내용은 JSP 2.1 spec의 EL 부분을 참조하십시오.

관련 문제