gpt4 book ai didi

java - 无法获取 servlet 设置的 jSTL requestScope 变量

转载 作者:行者123 更新时间:2023-11-28 23:35:58 26 4
gpt4 key购买 nike

我是第一次学习 JSTL,我在 Eclipse IDE 中使用 jSTL-1.2.jar、Tomcat 7 和最新版本的 Java。

我试图简单地为列表中的每个项目打印出表格的行。列表中的对象在 servlet 中设置了它们的公共(public)属性,该 servlet 将列表转发到我尝试进行打印的 index.jsp 页面。

这是我的 servlet:

import jstl.Employee;

@WebServlet("/HomeServlet")
public class HomeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Employee> empList = new ArrayList<Employee>();
Employee emp1 = new Employee();
emp1.setId(1); emp1.setName("John");emp1.setRole("Developer");
Employee emp2 = new Employee();
emp2.setId(2); emp2.setName("Jane");emp2.setRole("Manager");
empList.add(emp1);empList.add(emp2);

request.setAttribute("empList", empList);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index.jsp");
rd.forward(request, response);
}
}

还有 index.jsp 页面,我试图在该页面上遍历列表并打印出可公开访问的属性的对象变量:

<%@ page language="java" contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Home Page</title>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<style>
table,th,td
{border:1px solid black;}
</style>
</head>
<body>
<%-- Using JSTL forEach and out to loop a list and display items in table --%>
<table>
<tbody>
<tr><th>ID</th><th>Name</th><th>Role</th></tr>
<c:forEach items="${requestScope.empList}" var="emp">
<tr><td><c:out value="${emp.id}"></c:out></td>
<td><c:out value="${emp.name}"></c:out></td>
<td><c:out value="${emp.role}"></c:out></td></tr>
</c:forEach>
</tbody>
</table>
<br><br>
</body>
</html>

目前,当我加载页面时,只显示表格标题,而不显示两行,这是为什么?

编辑:添加了员工类:

package jstl;


public class Employee {

private int id;
private String name;
private String role;
public Employee() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}

}

编辑:这些是我正在使用的 jSTL.jars:

enter image description here

最佳答案

尝试 <c:forEach items="${empList}" var="emp"> .

另外,您需要通过 servlet 访问您的页面。在你的情况下,这将是 /HomeServlet .如果您通过 /index.jsp 访问您的页面,则不会创建该列表,因此您的 JSP 文件无法找到该列表。

关于java - 无法获取 servlet 设置的 jSTL requestScope 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24630291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com