重置 struts 令牌后取消请求的问题

Issue with requests cancelled after resetting struts token

我在较旧的 struts 1.3 应用程序中遇到问题。有一个页面使用 saveToken() 函数设置 struts 令牌。按下按钮后,将打开一个表单,并在后端操作中重置令牌以防止多次按下按钮。由于未知原因,正在对后端 .do 端点执行多个请求(或者一个被取消并发出新请求,不清楚到底发生了什么)。出现的问题是,在大多数情况下,第一个请求被允许 运行 足够长,以便 resetToken() 是 运行,使令牌无效,以便下一个请求被触发isTokenValid() 为假,因此表格永远不会打开。

有没有办法 struts 在请求被取消时捕获以便可以设置新令牌?

Chrome developer 是我可以看到多个请求正在完成的地方

这个问题似乎与不同的浏览器如何使用 jquery 处理没有指定 onclick 事件的按钮有关。 Chrome 和 Safari 似乎希望通过向与上下文匹配的任何内容发出提交请求来成为 "helpful",Firefox 和 Explorer/Edge 似乎忽略了它。我解决此问题的方法是通过将其添加到输入标记来显式禁用 onclick 事件:

onclick="return false;"

这似乎让页面只提交 struts 操作请求,决斗请求的问题就消失了。