wake-up-neo.com

Iteration durch ein Listenobjekt in JSP

Ich arbeite an einem Projekt, um zu versuchen, mir Frühling und Streben beizubringen. Ich stecke derzeit auf einer JSP-Seite fest. Ich habe eine Pojo-Klasse mit den Variablen EID und Ename mit Getters/Setters. Ich habe auch eine Tabelle in SQL mit den gleichen Werten mit sechs bestückten Zeilen.
Ich greife über eine JdbcTemplate auf meine Datenbank zu und habe das Ergebnis in einer Liste gespeichert. Diese Liste habe ich dann an meine Aktionsseite übergeben, auf der ich sie als request.setAttribute("empList",eList) eingestellt habe. In meiner JSP-Seite rufe ich dieses Attribut auf und versuche dann, es mit JSTL zu durchlaufen.
Es wird jedoch nichts angezeigt. Ich weiß, dass meine Listenvariable Daten enthält, da ich sie mit dem Ausdruckstag <%=eList%> geprüft habe und Objekte wie folgt angezeigt werden: 

[[email protected], 
[email protected], 
[email protected], 
[email protected], 
[email protected], 
[email protected]]

Ich dachte, dass mir vielleicht etwas auf jstl fehlte, aber ich habe jstl-1.2 in meinem META-INF/lib-Ordner. Ich habe auch versucht, es in die configure-Pfaddatei einzufügen und trotzdem nichts. Ich habe auch die richtige Tag-URL. 
Auch wenn ich einen einfachen <c:out value="Hello"/> mache. Hallo druckt aus. Das lässt mich glauben, dass meine jstl ordnungsgemäß funktioniert, aber wenn ich versuche, meine Liste mit jstl zu durchlaufen, wird überhaupt nichts angezeigt.

Sowieso ist hier meine JSP-Seite:

<%@ 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>

Jede Hilfe wäre sehr dankbar!

11
jjcode

Bevor Sie sich Spring und Struts beibringen, sollten Sie wahrscheinlich Java lernen. Ausgabe wie folgt

[email protected]

ist das Ergebnis der Object#toString()-Methode, die alle Objekte von der Object-Klasse, der Oberklasse aller Klassen in Java, erben.

Die List-Unterklassen implementieren dies, indem sie alle Elemente iterieren und toString() aufrufen. Es scheint jedoch, dass Sie die Methode in Ihrer Employee-Klasse nicht implementiert haben (überschreiben).

Deine JSTL hier

<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>

ist in Ordnung, außer dass Sie über kein Seiten-, Anfrage-, Sitzungs- oder Anwendungsattribut mit dem Namen eList verfügen. 

Sie müssen es hinzufügen

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

Oder verwenden Sie das Attribut empList in der forEach.

<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>
25

sie können empList direkt im forEach-Tag lesen. Versuchen Sie dies

 <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
Prabhaker

Ändern Sie den Code wie folgt 

<%! 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>
2
Alaa Abuzaghleh
 <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>
0
Savan Makone