답변
위의 코드는 작동하지 않습니다. 등 페이지, 세션에 범위되지 않은 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>
JSTL은 이러한 종류의 작업을 수행하도록 설계되지 않았습니다. 이것은 실제로 서블릿 클래스에 의해 직접 제어되는 비즈니스 로직에 속합니다. /animals
의 url-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
으로 호출하십시오.
그것은 C를 실행할 수 있습니다 파일에 배치해야하는 줄의 코드는 다음과 같습니다? 예를 들어, arraylist가 getter/setter가있는 클래스의 속성 인 경우 –
@robert : 물론입니다. 그 클래스를 스코프에 넣고'$ {bean.list} '''를 사용하십시오.'$ {bean}'은리스트를 리턴하는 getList() 메소드가있는 클래스를 가리 킵니다. – BalusC
감사합니다, 당신은 매우 빠릅니다! –
OP는 이미 JSTL을 사용하고 있었지만 제 답변에서 언급 할 필요는 없었습니다. 태그를 파싱하려면 taglib를 선언해야합니다. 게다가, taglib URI는 오래된 것입니다. 그 사이에'/ jsp '가 있어야합니다. – BalusC