Проблема с отменой запросов после сброса токена Struts

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

Есть ли способ для struts определить, отменяется ли запрос, чтобы можно было настроить новый токен?

Разработчик Chrome — это место, где я вижу выполнение нескольких запросов. Проблема с отменой запросов после сброса токена Struts

"Форма открыта..." что означает загрузка новой страницы? Что-то происходит через Ajax? Если последнее, то вам придется со всем справиться вручную, например, установить новый токен в форму на основе ответа Ajax. Лично я бы просто отключил кнопку при нажатии, тогда вам не нужно об этом беспокоиться.

Dave Newton 19.07.2019 20:21

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

aggaton 19.07.2019 21:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
127
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема, похоже, связана с тем, как разные браузеры обрабатывают кнопки без указанного события onclick с использованием jquery. Chrome и Safari, кажется, хотят быть «полезными», отправляя запрос на отправку тому, что соответствует контексту, Firefox и Explorer/Edge, похоже, игнорируют его. Я исправил эту проблему, явно отключив событие onclick, добавив это в тег ввода:

onclick = "return false;"

Кажется, это заставляет страницу отправлять только запрос на действие struts, и проблема с дуэльными запросами исчезла.

Другие вопросы по теме