首页 > 解决方案 > 即使发送了属性,JSP 代码仍显示 null

问题描述

我没有主意了。我打印了从 Servlet 发送的 ArrayList 书籍,它一直显示为 null。当我在 Servlet 中打印该数组时,它会显示正确的数据集。也许你可以帮助我:这是 Servlet:

    private void listBookedPlaces(HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    // get list of booked places from db util
    List<Book> books = bookDbUtil.getBooks();

    // add booked places to the request
    request.setAttribute("BOOKED_LIST", books); // set Attribute  (-name "BOOKED_LIST", -value books);

    // send to JSP page (view)
    RequestDispatcher dispatcher = request.getRequestDispatcher("/list-book.jsp");
    dispatcher.forward(request, response);

}

这是我的 JSP 代码:

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*, com.pbs.web.jdbc.*" %>

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>PSBS - Booked Parking Spaces Tracker</title>
</head>
<%
    // "BOOKED-LIST" is attribiute name set in ControllerServlet
    List<Book> theBooks = 
            (List<Book>) request.getAttribute("BOOKED_LIST");                      
%>
<body>
    <%= theBooks %>
</body>
</html>

我认为在调度时或在 JSP 本身中一定存在错误。我 100% 确定我提供的 .jsp 文件名是正确的。有任何想法吗?

标签: javajspservletsrequestdispatcher

解决方案


根据此代码

 List<Book> theBooks = (List<Book>) request.getAttribute("BOOKED_LIST");

你得到的列表不是对象。您最好使用 for 循环在正文中打印列表对象,例如

<%
for (int i = 0; i < theBooks.size(); i++)
      {
         System.out.println(theBooks.get(i).toString());
      }
%>

推荐阅读