簡體   English   中英

無法獲取servlet設置的jstl requestScope變量

[英]Unable to get jstl requestScope variables set by servlet

我是第一次學習JSTL ,並且在Eclipse IDE中使用jstl-1.2.jar,Tomcat 7和Java的最新版本。

我試圖簡單地為列表中的每個項目打印出表格的行。 列表中的對象在servlet中設置了公共屬性,該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>

當前,當我加載頁面時,僅顯示表標題,而不顯示兩行,這是為什么?

編輯:添加了Employee類:

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:

在此處輸入圖片說明

代替

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

它應該是

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

嘗試<c:forEach items="${empList}" var="emp">

另外,您需要通過servlet訪問頁面。 在您的情況下,它將是/HomeServlet 如果您通過/index.jsp訪問頁面,則不會創建該列表,因此您的JSP文件找不到該列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM