java - 即使发送了属性,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 文件名是正确的。有任何想法吗?
解决方案
根据此代码
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());
}
%>
推荐阅读
- javascript - 如何将东西存储在异步存储中?
- c - Cython 中的方法如何在 C 中实现?
- docker - Docker Desktop 无法切换到 Windows 容器
- java - 带有自定义 HTTP 错误响应的自定义 ConstraintValidator 消息
- javascript - 如何使用 Node.js 随机化 JavaScript 对象中的单个值
- javascript - 如何在 DataTable().row.add() 之后继续自定义 dataTable?
- python - 在字典中自动增加相同的值
- flutter - Flutter中的组件卸载(相当于React componentWillUnmount) - Flutter web
- c++ - 在访问私有元素时重载 << 运算符(朋友)
- java - 我在我的 firebase recyclerview 适配器的 logcat “E/RecyclerView:未连接适配器;跳过布局”中收到以下错误