После перенаправления контекстом страницы ReguestDispatcher не отображается (белая страница)?
Я перехожу со страницы проектов, чтобы увидеть задачи для текущего проекта.
Мне нужно перенаправить на страницу задач для выбранного проекта. Он перенаправляется на ok url, но страница не отображается. Это показывает белую страницу:
URL-адрес правильный и параметр передан правильно.
Вот отрезано projectTable.jsp
:
<form action="${pageContext.request.contextPath}/manager/projectstable" method="post" id="projectstable-form">
<div class="row">
<div class="table-responsive tile col-md-10 col-sm-12 col-xs-12 col-md-offset-1">
<table class="table table-striped table-hover">
<!-- Table -->
<thead>
<tr>
<th></th>
<th>#</th>
<th><fmt:message key="project.name" /></th>
<th><fmt:message key="project.description" /></th>
<th><fmt:message key="project.notes"/></th>
<th><fmt:message key="project.tasks"/></th>
</tr>
</thead>
<tbody>
<c:forEach var="project" items="${requestScope.projects}">
<tr>
<td>
<label class="checkbox" for="checkbox${project.id}">
<input type="checkbox" name="checkedProjects" value="${project.id}"
id="checkbox${project.id}" data-toggle="checkbox">
</label>
</td>
<td>${project.id}</td>
<td>${project.projectName}</td>
<td>${project.description}</td>
<td>${project.notes}</td>
<td><a href="${pageContext.request.contextPath}/manager/taskstable?project_id=${project.id}"
class="btn btn-info btn-xs"><fmt:message key="project.see.tasks"/></a>
</td>
Как это выглядит в браузере:
и перемещение реализовано как кнопка ссылки - See tasks
,
Вот фрагмент TasksTableServlet:
@WebServlet("/manager/taskstable")
@MultipartConfig
public class TasksTableServlet extends HttpServlet {
private static Logger log = Logger.getLogger(AddTaskServlet.class);
private TaskService taskService;
private List<Task> tasks;
private static final String DATE_FORMAT = "MM/dd/yyyy";
public static final String ATTRIBUTE_TO_MODEL = "tasksList";
public static final String PAGE_OK = "/pages/manager/tasksTable.jsp";
public static final String PAGE_ERROR_URL = "error";
@Override
public void init() throws ServletException {
taskService = new TaskService();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
if (request.getParameter("project_id") != null) {
System.out.println("ID: " + request.getParameter("project_id"));
updateTable(request);
if (!tasks.isEmpty()) {
request.setAttribute(ATTRIBUTE_TO_MODEL, tasks);
request.getRequestDispatcher(PAGE_OK);
return;
}
}
} catch (Exception e) {
log.error(e);
}
response.sendRedirect(PAGE_ERROR_URL);
}
private void updateTable(HttpServletRequest request) {
try {
int id = Integer.parseInt(request.getParameter("project_id"));
tasks = taskService.getByProjectId(id);
} catch (DAOException e) {
log.error(e);
}
}
А вот и содержание tasksTable.jsp.
Я не мог понять, почему эта страница не отображается? Это должно работать, на мой взгляд.
Как решить эту проблему?
1 ответ
Решение
Запрос диспетчера - это только первый шаг. Вы также должны на самом деле вперед.
request.getRequestDispatcher(PAGE_OK).forward(request, response);
return;