복붙노트

[SPRING] JSP에서 List 객체 반복하기

SPRING

JSP에서 List 객체 반복하기

나는 봄과 스트럿을 가르치려고 노력하는 프로젝트를 진행 중이다. 나는 현재 JSP 페이지에 붙어있다. 변수가있는 pojo 클래스와 getters / setter를 사용하여 enjo를 만들었고, 6 개의 채워진 행과 동일한 값을 가진 SQL 테이블도 가지고 있습니다. JdbcTemplate을 통해 데이터베이스에 액세스하고 결과를 목록에 저장 한 다음 이 목록을 request.setAttribute ( "empList", eList)로 설정 한 내 작업 페이지로 전달했습니다. 내 JSP 페이지에서 그 속성을 호출 한 다음 JSTL을 사용하여 반복하려고 시도합니다. 그러나 아무 것도 나타나지 않습니다. 표식 태그 <% = eList %>를 사용하여 체크 한 이후에 내 목록 변수에 데이터가 들어 있고 객체가 다음과 같이 표시됩니다.

[org.classes.database.Employee@d9b02, 
org.classes.database.Employee@13bce7e, 
org.classes.database.Employee@171cc79, 
org.classes.database.Employee@272a02, 
org.classes.database.Employee@137105d, 
org.classes.database.Employee@1359ad]

아마도 jstl에 뭔가 빠져있는 것 같았지만 jstl-1.2가 META-INF / lib 폴더에 있습니다. 또한 configure path 파일에 추가하려고했지만 아직 아무것도하지 않았습니다. 나는 또한 정확한 꼬리표 URL을 가지고있다. 또한 간단한 를 할 때. 안녕하세요. 그래서 이것은 내 jstl이 제대로 작동하고 있다고 믿게하지만 jstl을 사용하여 목록을 반복 할 때 아무 것도 나타나지 않습니다. 어쨌든 여기 내 JSP 페이지가 있습니다.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-   8859-1"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.List"%>
<!DOCTYPE html>
<% List eList = (List)session.getAttribute("empList");%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Employee Details</title>
</head>
<body>
<c:out value="Hello"></c:out>
<h3>Employee Details</h3>
<hr size="4" color="gray"/>
<table>
<%=eList%>
    <c:forEach items="${eList}" var="employee">
        <tr>
            <td>Employee ID: <c:out value="${employee.eid}"/></td>
            <td>Employee Pass: <c:out value="${employee.ename}"/></td>  
        </tr>
    </c:forEach>
</table>
</body>
</html>

어떤 도움을 주시면 감사하겠습니다!

해결법

  1. ==============================

    1.Spring과 Struts를 가르치기 전에 Java를 배워야합니다. 이 같은 출력

    Spring과 Struts를 가르치기 전에 Java를 배워야합니다. 이 같은 출력

    org.classes.database.Employee@d9b02
    

    모든 객체가 Java의 모든 클래스의 수퍼 클래스 인 Object 클래스에서 상속하는 Object # toString () 메서드의 결과입니다.

    List 하위 클래스는 모든 요소를 ​​반복하고 해당 요소에 대해 toString ()을 호출하여이를 구현합니다. 그러나 Employee 클래스에서 메소드를 구현 (오버라이드)하지 않은 것처럼 보입니다.

    여기에 JSTL

    <c:forEach items="${eList}" var="employee">
        <tr>
            <td>Employee ID: <c:out value="${employee.eid}"/></td>
            <td>Employee Pass: <c:out value="${employee.ename}"/></td>  
        </tr>
    </c:forEach>
    

    eList라는 페이지, 요청, 세션 또는 응용 프로그램 범위 속성이 없다는 점을 제외하고는 아무 문제가 없습니다.

    추가해야합니다.

    <% List eList = (List)session.getAttribute("empList");
       request.setAttribute("eList", eList);
    %>
    

    또는 forEach에서 empList 속성을 사용하십시오.

    <c:forEach items="${empList}" var="employee">
        <tr>
            <td>Employee ID: <c:out value="${employee.eid}"/></td>
            <td>Employee Pass: <c:out value="${employee.ename}"/></td>  
        </tr>
    </c:forEach>
    
  2. ==============================

    2.forEach 태그에서 직접 empList를 읽을 수 있습니다.

    forEach 태그에서 직접 empList를 읽을 수 있습니다.

     <table>
           <c:forEach items="${sessionScope.empList}" var="employee">
                <tr>
                    <td>Employee ID: <c:out value="${employee.eid}"/></td>
                    <td>Employee Pass: <c:out value="${employee.ename}"/></td>  
                </tr>
            </c:forEach>
        </table>
    
  3. ==============================

    3.코드를 다음과 같이 변경하십시오.

    코드를 다음과 같이 변경하십시오.

    <%! List eList = (ArrayList)session.getAttribute("empList");%>
    ....
    <table>
        <%
        for(int i=0; i<eList.length;i++){%>
            <tr>
                <td><%= ((Employee)eList[i]).getEid() %></td>
                <td><%= ((Employee)eList[i]).getEname() %></td>  
            </tr>
          <%}%>
    </table>
    
  4. ==============================

    4.

     <c:forEach items="${sessionScope.empL}" var="emp">
                <tr>
                    <td>Employee ID: <c:out value="${emp.eid}"/></td>
                    <td>Employee Pass: <c:out value="${emp.ename}"/></td>  
                </tr>
            </c:forEach>
    
  5. ==============================

    5.지도가 포함 된 ArrayList를 반복 할 때 scriplets가있는 또 다른 예입니다.

    지도가 포함 된 ArrayList를 반복 할 때 scriplets가있는 또 다른 예입니다.

    <%   
    java.util.List<java.util.Map<String,String>> employees=(java.util.List<java.util.Map<String, String>>)request.getAttribute("employees");    
    
    for (java.util.Map employee: employees) {
    %>
    <tr>
    <td><input value="<%=employee.get("fullName") %>"/></td>    
    </tr>
    ...
    <%}%>
    
  6. from https://stackoverflow.com/questions/20789207/iterating-through-a-list-object-in-jsp by cc-by-sa and MIT license