У меня проблема в старом приложении Struts 1.3. Существует страница, которая устанавливает токен Struts с помощью функции saveToken(). После нажатия кнопки открывается форма, а во внутреннем действии токен сбрасывается, чтобы предотвратить многократное нажатие кнопки. По пока неизвестным причинам выполняется несколько запросов к конечной точке бэкэнда .do (или один отменяется и делается новый запрос, мало что неясно, что именно происходит). Возникающая проблема заключается в том, что первый запрос в большинстве случаев может выполняться достаточно долго, так что resetToken() запускается, делая токен недействительным, так что следующий отстреливаемый запрос срабатывает isTokenValid() как ложный, поэтому форма никогда не открывается.
Есть ли способ для struts определить, отменяется ли запрос, чтобы можно было настроить новый токен?
Разработчик Chrome — это место, где я вижу выполнение нескольких запросов.

Это прямое действие, которое, кажется, перенаправляет на другой файл jsp, который открывает форму в окне. Да, я думал об отключении кнопки. Спасибо за ваш вклад!




Проблема, похоже, связана с тем, как разные браузеры обрабатывают кнопки без указанного события onclick с использованием jquery. Chrome и Safari, кажется, хотят быть «полезными», отправляя запрос на отправку тому, что соответствует контексту, Firefox и Explorer/Edge, похоже, игнорируют его. Я исправил эту проблему, явно отключив событие onclick, добавив это в тег ввода:
onclick = "return false;"
Кажется, это заставляет страницу отправлять только запрос на действие struts, и проблема с дуэльными запросами исчезла.
"Форма открыта..." что означает загрузка новой страницы? Что-то происходит через Ajax? Если последнее, то вам придется со всем справиться вручную, например, установить новый токен в форму на основе ответа Ajax. Лично я бы просто отключил кнопку при нажатии, тогда вам не нужно об этом беспокоиться.