Я решил аналогичный (не тот же) сценарий с перехватчиком MVC.
Для меня проблема в том, что у меня есть формы.Если пользователь вводит что-то в форму, и запрос принимается, то он обычно перенаправляется на соответствующую страницу показа.(Образец ОТДЫХА).Но есть некоторые формы, которые должны вести себя по-разному, если from вызывается из специальной страницы.
Пример. Таким образом, если пользователь переходит на страницу «A», оттуда на страницу «F» сформа, вводит значение и отправляет, затем он получает (после того, как соответствующее действие выполнено на сервере) перенаправлено на страницу «S».Но если пользователь начинает со страницы «B», затем переходит на страницу формы «F», отправляет форму, то его следует перенаправить на «B».
Это работает так: у меня есть специальныйпараметр запроса RETURN_ACTIVATE
этот параметр содержит URL.Перехватчик MVC обнаруживает, имеет ли текущий запрос этот параметр.(Для простоты использования перехватчик MVC также проверяет, если RETURN_ACTIVATE
выходит, но не заполнен, то он заменяет свое значение на HTTP-реферер).
- Теперь, если перехватчик MVC обнаруживает, что текущий запрос имеет этот параметр
RETURN_ACTIVATE
, а ответ веб-контроллера представляет собой перенаправление, он заменяет URL-адрес перенаправления из параметра RETURN_ACTIVATE
- Но если ответ веб-контроллера является обычным представлением формы, то Interceptor добавляет в модель только значение, также называемое
RETURN_ACTIVATE
.Его значение равно значению параметра RETURN_ACTIVATE
.
В каждую из моих форм я добавляю скрытый параметр с именем RETURN_ACTIVATE
, если модель содержит значение RETURN_ACTIVATE
(значение скрытого значения).параметр это, конечно, значение из модели).
Таким образом, в конце единственное, что мне нужно сделать, чтобы запустить весь процесс, это добавить параметр без значения в ссылку на странице "B", которую пользователь использует для перехода на страницу "F",<a href="f?RETURN_ACTIVATE">formPage</a>
Затем MVC Interceptor добавляет параметр с URL-адресом реферера в модель, потому что Контроллер возвращает представление для формы.JSP добавляет скрытое значение <input type="hidden" name="RETURN_ACTIVATE" value="b"/>
к форме.Когда пользователь отправляет форму, а контроллер отвечает перенаправлением на «s», тогда MVC Intercepter меняет «c» на «b».
Так что мое решение немного сложнее, потому что случай использованиясложнее, но я надеюсь, что это даст вам некоторые идеи.