Передать параметр HTTPRequest в другой запрос - PullRequest
0 голосов
/ 11 мая 2019

В моем веб-приложении CRUD MVC у меня есть страница users.jsp, которая вызывается сервлетом /users, который отображает разбитую на страницы таблицу пользователей с кнопками для каждого пользователя, который выполняет действие (например, предоставляет права администратора), но не перенаправить на отдельную страницу JSP. Действие выполняется путем вызова отдельного сервлета по нажатию кнопки:

<button formaction="changeUserRights">Grant admin rights</button>

Сервлет changeUserRights выполняет соответствующую операцию БД и вызывает

resp.sendRedirect("/users")

, который отображает нумерацию страниц и перенаправляет на users.jsp.

Однако, когда я нажимаю кнопку Grant admin rights, находясь на странице 2+ (например, users?page=3), приложение перенаправляет меня на страницу по умолчанию /users.

Как сделать так, чтобы приложение оставалось на той же странице, то есть сохранить параметр page? Я знаю, как сохранить параметры в качестве атрибутов запроса и передать их другим сервлетам в рамках того же запроса, но здесь, насколько я понимаю, я создаю новый запрос по нажатию кнопки. Я думаю, я мог бы сохранить параметр в sessionScope, но я считаю, что есть лучший способ. Так как мне передать этот параметр сервлету /changeUserRights с этим новым запросом, сделанным из jsp?

Я прочитал несколько постов на SO о том, как остаться на той же странице, например этот , но не мог понять, как применить его к моему вопросу.

Спасибо.

1 Ответ

0 голосов
/ 12 мая 2019

Хорошо, это было легко.

  1. Обновите вызов jsp:
<button formaction="changeUserRights?page=${currentPage}">Grant admin rights</button>

, где currentPage - это атрибут запроса, который устанавливается службой, выполняющей разбиение на страницы в веб-приложении.

  1. Считать параметр в сервлете changeUserRights:
String pageNumber = "1";
if (req.getParameter("page") != null) {
    pageNumber = req.getParameter("page")
}
  1. Передать параметр при перенаправлении обратно на /users:
resp.sendRedirect("/users?page=" + pageNumber);
...