Обновление JSP из сервлета после отправки - PullRequest
0 голосов
/ 01 января 2012

У меня есть JSP (AddDocument.jsp) со следующей формой:

<form action=" ${pageContext.request.contextPath}/project?to=submitAdd&idProject=${param.idProject}" method="post" name="form">
    <div>Name:</div>
    <input type="text" name="name" /><br /> <br />
    <input type="submit" value="Add document" />
</form>

При отправке вызывается сервлет (ProjectManager), который выполняет следующие действия:

private void addDocumento(HttpServletRequest request, HttpServletResponse response) {
    HttpSession session=request.getSession();
    // elaborating...
    session.setAttribute("addingResult", "Document added");
    // or error if an exception is caught
    redirect(request.getContextPath()+"/project?to=add&idProject="+idProject,request,response);
}

Это перенаправление на ту же страницу после установки атрибута сеанса, который будет прочитан JSP и показан пользователю.
Моя проблема в том, что браузер думает, что он переходит на новую страницу и его история увеличивается (например, если я иду в AddingDocument.jsp из X.jsp, вставляю 10 раз неверное имя в форму и перенаправляюсь на ту же страницу с ошибкой, мне придется вернуться 10 раз, чтобы прийти к X.jsp).
Я хочу иметь возможность вернуться только один раз, чтобы прийти к X.jsp, поэтому мне нужно некоторое обновление моего JSP вместо перенаправления, но с тем же эффектом на запрос и ответ (что нет новой отправки, если я вручную обновлю страницу). Как я могу это сделать?

1 Ответ

0 голосов
/ 01 января 2012

Вы захотите использовать AJAX вместо простой отправки формы. Помимо того, что он не вносит свой вклад в историю браузера, он должен обеспечивать «лучший» пользовательский опыт, которого большинство пользователей ожидают сегодня.

...