Как остановить повторную подачу страницы при нажатии F5 (Refressing) в окне браузера - PullRequest
0 голосов
/ 12 ноября 2018

Цель

По сути, я хочу различать обычную отправку страницы и событие «Обновить», запускаемое в окне браузера.Чтобы я мог прекратить повторную отправку.

Brief

У меня есть Spring MVC App, в котором Rest URLs помечен для каждого контроллера, скажем, один контроллер Spring длякаждая операция CRUD.Теперь при отправке запроса на запрос добавления / редактирования запрос POST отправляется бэкэнд-контроллеру для соответствующего идентификатора.

For example
localhost.xxx/add --> add request is sent for a new id auto-generated from backend.
localhost.xxx/edit --> edit request is sent for the id\ record currently edited. 

Issue

В моем случае При повторном нажатии F5 после повторной отправки старый запрос отправляется в резервное копирование с тем же идентификатором.

Достигнуть

Я бы хотел остановить эту повторную подачу формы, когда клавиша F5 каким-то образом нажата.Любой обходной путь или бэкэнд (событие перенаправления) подойдет, однако я был бы рад узнать / предпочесть, каков идеальный способ остановить такие повторные представления.

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете использовать Post-Get-Redirect .

После завершения процедуры POST вместо возврата имени представления отправьте запрос на перенаправление, используя "redirect:<pageurl>".

И есть метод с method = RequestMethod.GET, возвращающий имя представления.

Таким образом, метод post даст браузеру ответ о перенаправлении, а затем браузер получит URL-адрес перенаправления, используя метод get, поскольку повторной отправки избегают.

Ссылка избегать повторной отправки формы при обновлении страницы

...