Как мне остановить F5 от загрузки нескольких файлов? - PullRequest
0 голосов
/ 24 февраля 2012

Я создаю веб-приложение с использованием Servlet 2.5, и я столкнулся с необходимостью сделать его так, чтобы пользователь не мог нажать кнопку и выполнить действие, а затем нажать F5 / Обновить и выполнить действие снова.

Два способа, которыми я размышлял о том, как бороться с этим (но на самом деле не слишком много думал, подумав, что лучше сначала спросить здесь):

  • Когда действие выполнено, я призываюперенаправить, эффективно очистив любые параметры запроса
  • Когда действие выполнено, я добавляю рандомизированный хэш и проверяю следующую запись, изменилась ли она или нет?(но не знаю, как узнать, является ли следующее действие обновлением или действительно новым запросом здесь)

Или есть более простой / стандартизированный способ сделать это либо с помощью Tomcat / etc, либо некоторогобиблиотека общего пользования?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2012

Ваша первая идея верна.Шаблон называется редирект после сообщения .Если вы используете какой-либо продвинутый фреймворк для веб-разработки, он должен поддерживать это «из коробки».

Вы должны правильно использовать глаголы HTTP.Если это HTTP GET, то не должно быть проблем с его повторным вызовом.

1 голос
/ 25 февраля 2012

Другая техника, которую я вижу, - это асинхронная загрузка с использованием ajax. Кнопка F5 / refresh будет бесполезной, поскольку она больше не будет вызывать событие загрузки.

Для предотвращения нескольких нажатий на кнопку (т. Е. Скрытия кнопки или ее отключения) потребуется дополнительная работа с JavaScript.

...