Дублирующееся представление формы в [закрытом] Spring

21
задан Nidhish Krishnan 14 June 2014 в 17:00
поделиться

2 ответа

В дополнение к диалоговым окнам хода выполнения, описанным в других ответах, можно:

  • Добавьте ProgressBar в действие, как показано здесь
  • Используйте индикатор хода выполнения в строке заголовка действия, как показано здесь
  • Используйте RotateAnimation и собственное пользовательское изображение
-121--3311343-

Существуют различные пути избежать двойной отправки, которые могут

  1. С помощью JavaScript отключите кнопку через несколько мс после нажатия. Это позволит избежать множественных представлений, вызванных нетерпеливыми пользователями, которые нажимают несколько раз на кнопку.

  2. Отправка перенаправления после отправки - это шаблон Post-Redirect-Get (PRG) . Это позволит избежать многократных представлений, вызванных нажатием пользователем F5 на странице результатов и игнорированием предупреждения браузера о том, что данные будут отправлены повторно, или переходом назад и вперед с помощью кнопок возврата/пересылки браузера и игнорированием того же предупреждения.

  3. Создание уникального маркера, когда страница запрашивается и помещается как в область сеанса, так и в скрытое поле формы. Во время обработки проверьте наличие маркера, а затем немедленно удалите его из сеанса и продолжите обработку. Если маркера нет, то блокируйте обработку. Это позволит избежать вышеупомянутых типов проблем.

Весной можно использовать RedirectView в качестве реализации образца PRG (как описано в пункте 2). Остальные два момента необходимо реализовать самостоятельно.

38
ответ дан 29 November 2019 в 20:12
поделиться

Просто сделайте редирект после публикации. После успешной отправки формы при возврате вашего ModelAndView убедитесь, что View является RedirectView. Из точки зрения пользователя они отправляют форму, а затем перенаправляются, чтобы сделать «GET» на другой URL-адрес. Таким образом, они не будут подчиняться дважды.

Обратите внимание, что при использовании представления перенаправления атрибуты модели отображаются в URL-адресе в качестве параметров. Так что вы можете захотеть, чтобы атрибуты были как можно более тонкими. Что я обычно делаю, так это показываю пользователю страницу, которая на самом деле не содержит какой-либо уникальной информации, а только "подтверждающее" сообщение.

4
ответ дан 29 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: