Перенаправление на ту же страницу поиска после отправки в Spring MVC

#spring #spring-mvc

#spring #spring-mvc

Вопрос:

У меня есть сценарий, в котором пользователь может искать данные учетной записи, и результат поиска будет отображаться в табличном формате с разбивкой по страницам (1,2 ..). На странице результатов пользователь может перемещаться туда и обратно с помощью разбивки на страницы и может изменять данные учетной записи на любой странице и отправлять то же самое. До сих пор все было в порядке. Теперь я хочу перенаправить пользователя на ту же страницу поиска () с теми же критериями поиска, по которым он был до отправки.

Например: пользователь ищет данные учетной записи для всех пользователей с именем «abc», а в таблице 26 строк, поэтому система отобразит результат в виде 10 (страница 1)-10 (страница 2)-6 (страница 3).

Теперь пользователь переходит на страницу 2 и присваивает некоторое значение, а затем нажимает отправить, после отправки пользователь должен быть перенаправлен на страницу 2 с теми же критериями (имя «abc»).

Пожалуйста, дайте некоторое представление об этом.

Спасибо

Ответ №1:

Я решил аналогичный (не такой же) сценарий с перехватчиком MVC.

Для меня проблема в том, что у меня есть формы. Если пользователь вводит что-то в форму, и запрос принимается, то он обычно ПЕРЕНАПРАВЛЯЕТСЯ на соответствующую страницу показа. (Шаблон REST). Но есть некоторые формы, которые должны вести себя иначе, если from «вызывается» со специальной страницы.

Пример: Итак, если пользователь переходит на страницу «A», оттуда на страницу «F» с формой, вводит значение и отправляет, то он получает (после выполнения соответствующего действия на сервере) перенаправление на СТРАНИЦУ «S». Но если пользователь начинает со страницы «B», затем переходит на страницу формы «F», отправляет форму, тогда он должен быть перенаправлен на «B».

Это работает следующим образом: у меня есть специальный параметр запроса RETURN_ACTIVATE этот параметр содержит URL. Перехватчик MVC определяет, имеет ли текущий запрос этот параметр. (Для удобства использования перехватчик MVC также проверяет, завершается ли RETURN_ACTIVATE , но пусто, затем заменяет его значение на HTTP refererer).

  • Теперь, если перехватчик MVC обнаруживает, что текущий запрос имеет этот RETURN_ACTIVATE параметр, а ответ веб-контроллера является перенаправлением, тогда он заменяет URL-адрес перенаправления на тот, который указан в RETURN_ACTIVATE параметре
  • Но если ответ веб-контроллера является обычным представлением формы, тогда Перехватчик добавляет к модели только значение, также названное RETURN_ACTIVATE . Его значением является значение из RETURN_ACTIVATE параметра.

В каждой из моих форм я добавляю скрытый параметр vparameter с именем, RETURN_ACTIVATE если модель содержит значение RETURN_ACTIVATE (значение скрытого параметра, конечно, является значением из модели).

Итак, в конце единственное, что мне нужно сделать, чтобы запустить весь материал, — это добавить параметр без значения к ссылке на странице «B», которую пользователь использует для перехода на страницу «F». <a href="f?RETURN_ACTIVATE">formPage</a> Затем перехватчик MVC добавляет параметр с URL-адресом ссылки к модели, поскольку контроллер возвращает представление для формы. JSP добавляет скрытое значение <input type="hidden" name="RETURN_ACTIVATE" value="b"/> в форму. Когда пользователь отправляет форму, а контроллер отвечает перенаправлением на «s», перехватчик MVC меняет «c» на «b».

Итак, мое решение немного сложнее, потому что вариант использования сложнее, но я надеюсь, что это даст вам несколько идей.