我正在使用Struts2框架,我的问题是
如果用户登录到系统并单击某个动作(例如ACTION1
),流程将转到动作类并执行某些方法,并返回适当的结果。
他可能会访问某些网页,然后再次单击ACTION1
。
只要他在同一个会话中,现在控件就不应采用该特定方法,但结果应与以前的结果相同。
我们怎样才能做到这一点?
最佳答案
您可以尝试使用tokenSession
拦截器。
此拦截器基于Token
Interceptor构建,提供
用于处理无效令牌的高级逻辑。与普通令牌不同
拦截器,此拦截器将尝试提供智能
如果使用同一会话的多个请求发生故障转移。
也就是说,它将阻止后续请求,直到第一个请求
完成,然后不返回invalid.token
代码,而是
将尝试显示与原始有效
如果没有多个请求,则将显示操作调用
首先提交。
这样可以防止重复提交相同的操作或重复使用s:token
标记提供的相同令牌。
描述
停止重复提交表格。
令牌标记用于帮助“双击”提交
问题。如果您使用TokenInterceptor
或
TokenSessionInterceptor
。 s:token
标签只是放置一个隐藏的
包含唯一令牌的元素。
将标记放置在表单中,您永远不会再次提交相同的表单。令牌会话拦截器将通过返回与第一种情况相同的响应来尝试为您处理无效令牌。