只要用户处于当前会话中,就防止调用两次相同的操作

时间:2013-12-06 13:49:52

标签: java jsp struts2 double-submit-problem

我正在使用Struts2框架,我的问题是

如果用户登录系统并单击某个动作,请说ACTION1,流程将转到动作类并执行某些方法,返回相应的结果。 他可能会访问某些网页,然后再次点击ACTION1

只要他在同一个会话中,现在控件不应该采用那种特定的方法,但结果应与之前的结果相同。

我们如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以尝试tokenSession拦截器。

  

这个拦截器建立在Token Interceptor之上   用于处理无效令牌的高级逻辑。与普通令牌不同   拦截器,这个拦截器将尝试提供智能   在使用相同会话的多个请求的情况下进行故障转移。   也就是说,它将阻止后续请求,直到第一个请求为止   完成,然后而不是返回invalid.token代码   将尝试显示与原始相同的响应,有效   如果没有多个请求,则会显示动作调用   首先提交。

它将阻止双重提交相同的操作或重复使用s:token标记提供的相同令牌。

  

描述

     

停止提交表格。

     

令牌标记用于帮助“双击”提交   问题。如果您使用的是TokenInterceptor或者,则需要它   TokenSessionInterceptors:token标记只是隐藏了一个   包含唯一标记的元素。

将标签放在您的表单中,您永远不会再提交相同的表单两次。令牌会话拦截器将尝试通过返回与第一种情况相同的响应来为您处理无效令牌。