一尘不染

遍历JSP中的列表对象

spring

我正在做一个项目,尝试自学spring and struts。我目前停留在JSP页面上。我有一个带有变量eid和ename和getters / setters的pojo类,我也有一个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上丢失了一些东西,但是我的META-INF/lib文件夹中有jstl-1.2 。我也曾尝试将其添加到配置路径文件中,但还是一无所获。我也有正确的标签网址。
另外当我做一个简单的<c:out value="Hello"/>。你好确实打印了。因此,这使我相信自己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>

任何帮助将不胜感激!


阅读 567

收藏
2020-04-18

共1个答案

一尘不染

在学习Spring和Struts之前,你可能应该学习Java。这样的输出

org.classes.database.Employee@d9b02

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);
%>

或使用属性empListforEach

<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>
2020-04-18