Итерация через объект списка в JSP

Я работаю над проектом, чтобы попробовать научить себя spring и struts. В настоящее время я застрял на странице JSP. У меня есть класс pojo с переменными eid и ename с getters/seters, у меня также есть таблица в sql с теми же значениями с шестью заполненными строками.
Я обращаюсь к своей базе данных через JdbcTemplate и сохранил результат в список, я передал этот список на мою страницу действий, в которой я установил ее как request.setAttribute("empList",eList). На моей странице jsp я вызываю этот атрибут, а затем пытаюсь выполнить итерацию через него с помощью JSTL.
Однако ничего не появляется, я знаю, что моя переменная списка имеет данные в нем, так как я проверил его с помощью тега выражения <%=eList%> и объекты отображаются следующим образом:

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

Я подумал, что, возможно, мне что-то не хватает на jstl, но у меня есть jstl-1.2 в моей папке META-INF/lib. Я также попытался добавить его в файл конфигурации configure и все равно ничего. У меня также есть правильный URL-адрес тега.
Также, когда я делаю простой <c:out value="Hello"/>. Привет распечатывается. Таким образом, это заставляет меня поверить, что мой JSTL работает нормально, но когда я пытаюсь выполнить итерацию через свой список, используя JSTL, ничего не появляется вообще.

Anyways вот моя страница 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

Прежде чем научить себя Spring и Struts, вы должны, вероятно, изучить Java. Вывод вроде этого

[email protected]

является результатом метода Object#toString(), который все объекты наследуют от класса Object, суперкласса всех классов в Java.

Подпрограммы 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);
%>

Или используйте атрибут empList в 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>

Ответ 2

измените код на следующий

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

Ответ 3

вы можете прочитать empList непосредственно в теге forEach. Попробуйте этот

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

Ответ 4

другой пример с помощью только скриптов при повторении через ArrayList, содержащий Карты.

<%   
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>
...
<%}%>

Ответ 5

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