JSP 看不到从 servlet 传输的属性



第二天找不到问题的原因。我将属性设置为请求并转发到一个jsp文件。但当我尝试从requestScope获取它时,我发现没有这样的属性。看看我的代码:

servlet:

package api.servlets;
import api.model.Task;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@WebServlet("/")
public class GetStartPageServlet extends HttpServlet {
private Map<Integer, Task> tasks;
@Override
public void init() {
final Object tasks = getServletContext().getAttribute("tasks");
if (tasks instanceof ConcurrentHashMap){
this.tasks = (ConcurrentHashMap<Integer, Task>) tasks;
}else {
throw new IllegalStateException("Your repo does not initialize!");
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("tasks", tasks.values());
getServletContext().getRequestDispatcher("/WEB-INF/view/start-page.jsp").forward(request, response);
}
}

jsp:

<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Сервис задач</title>
<style>
<%@include file="/WEB-INF/css/style.css" %>
</style>
</head>
<body>
<h2>Все задачи</h2>
<c:forEach var="task" items="${requestScope.tasks}">
<ul>
Название: <c:out value="${task.title}"/> <br>
Описание: <c:out value="${task.description}"/> <br>
<form method="get" action="<c:url value='/update-task'/>">
<label>
<input type="number" hidden name="id" value="${task.id}">
</label>
<input type="submit" value="Редактировать">
</form>
<form method="post" action="<c:url value='/delete-task'/>">
<label>
<input type="number" hidden name="id" value="${task.id}">
</label>
<input type="submit" value="Удалить">
</form>
</ul>
<hr/>
</c:forEach>
<h2>Создание новой задачи</h2>
<form method="post" action="<c:url value='/add-task'/>">
<label>Название <input type="text" name="title"/></label><br>
<label>Описание <input type="text" name="description"/></label><br>
<input type="submit" value="Ok" name="Ok"/>
</form>
<h2>Получить JSON задачи по id</h2>
<form method="get" action="<c:url value='/get-task'/>">
<label>ID задачи <input type="number" name="id"></label><br>
<input type="submit" value="Получить данные задачи" name="Ok"><br>
</form>
</body>
</html>

requestScope没有类似字段的任务,我在浏览器中看到的是:在此处输入图像描述

您的问题可能是web.xml头,请尝试使用它来正确评估EL:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

除此之外,我与jsp的联系时间不长,但我想您可以访问那些请求属性,只需调用它们,而不需要这个requestScope,只调用tasks或从请求request.getAttribute("tasks")中获取它们

最新更新