2009-12-02 1 views

답변

1

위의 코드는 작동하지 않습니다. 등 페이지, 세션에 범위되지 않은 ArrayList를()에 foreach는 :

animals.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 
<c:forEach var="animal" items="${animals}"> 
    <c:set var="animalName" value="${animal}"/> 
    <c:out value="${animalName}"/> 
</c:forEach> 
+4

OP는 이미 JSTL을 사용하고 있었지만 제 답변에서 언급 할 필요는 없었습니다. 태그를 파싱하려면 taglib를 선언해야합니다. 게다가, taglib URI는 오래된 것입니다. 그 사이에'/ jsp '가 있어야합니다. – BalusC

11

JSTL은 이러한 종류의 작업을 수행하도록 설계되지 않았습니다. 이것은 실제로 서블릿 클래스에 의해 직접 제어되는 비즈니스 로직에 속합니다. /animalsurl-pattern

protected void doGet(HttpServletRequest request, HttpServletResponse response) { 
    List<String> animals = new ArrayList<String>(); 
    animals.add("Sylvester"); 
    animals.add("Goofy"); 
    animals.add("Mickey"); 
    request.setAttribute("animals", animals); 
    request.getRequestDispatcher("/WEB-INF/animals.jsp").forward(request, response); 
} 

지도이 :

처럼 수행하는 서블릿을 작성합니다.

지금 (직접 액세스를 방지하기 위해 WEB-INF에 배치) /WEB-INF/animals.jsp에서 JSP 파일을 생성 :

<c:forEach items="${animals}" var="animal"> 
    ${animal}<br> 
</c:forEach> 

가 서블릿으로 jsp:useBean에 대한 필요가 이미 값을 설정하지.

서블릿 + JSP를 http://example.com/context/animals으로 호출하십시오.

+0

그것은 C를 실행할 수 있습니다 파일에 배치해야하는 줄의 코드는 다음과 같습니다? 예를 들어, arraylist가 getter/setter가있는 클래스의 속성 인 경우 –

+2

@robert : 물론입니다. 그 클래스를 스코프에 넣고'$ {bean.list} '''를 사용하십시오.'$ {bean}'은리스트를 리턴하는 getList() 메소드가있는 클래스를 가리 킵니다. – BalusC

+1

감사합니다, 당신은 매우 빠릅니다! –