【发布时间】:2010-07-22 00:08:21
【问题描述】:
我正在使用 struts2.1.8。在这里我想处理双重提交。 truts2 提供了 TokenInterceptor。因此,如果我提交了两次,它会返回“invalid.token”作为结果名称。但我想显示我提交过两次的同一个页面。
【问题讨论】:
标签: struts2
我正在使用 struts2.1.8。在这里我想处理双重提交。 truts2 提供了 TokenInterceptor。因此,如果我提交了两次,它会返回“invalid.token”作为结果名称。但我想显示我提交过两次的同一个页面。
【问题讨论】:
标签: struts2
由于您想显示您重复提交的同一页面,因此您需要在您试图防止重复提交的每个 <action> 定义中创建一个 invalid.token 结果:
<action name="some-action" class="foo.Bar">
<interceptor-ref name="token"/>
<result name="success">/WEB-INF/some/action/success.jsp</result>
<result name="invalid.token">/WEB-INF/some/action/input.jsp</result>
</action>
The docs 提供更多信息,您可能还想考虑查看Token Session Interceptor。
【讨论】:
您的应用程序中是否需要双重提交功能?
如果要防止重复提交问题,最好实现Redirect after Post模式,详细解释见以下两个链接:
http://www.theserverside.com/news/1365146/Redirect-After-Post
【讨论】:
查看基于TokenInterceptor 的TokenSessionInterceptor。来自文档:
与普通的令牌拦截器不同, 这个拦截器将尝试 提供智能故障转移 使用多个请求的事件 同一个会话。也就是说,它会阻塞 后续请求,直到第一个 请求完成,然后改为 返回 invalid.token 代码, 它会尝试显示相同的 回应原始的、有效的 动作调用将显示 如果没有提交多个请求 首先。
【讨论】: