我正在使用struts2.1.8。在这里,我想处理双重提交。 truts2提供了TokenInterceptor。因此,如果我提交了两次,则返回“invalid.token”作为结果名称。但我想显示我已提交两次的同一页面。
答案 0 :(得分:2)
由于您要显示双重提交的同一页面,因此您需要在每个invalid.token
定义中创建一个<action>
结果,以防止双重提交:
<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。
答案 1 :(得分:1)
您的申请中是否需要双重提交功能?
如果您想防止双重提交问题,最好在发布模式后实施重定向,请参阅以下两个链接以获取详细说明:
http://www.theserverside.com/news/1365146/Redirect-After-Post
答案 2 :(得分:1)
查看基于TokenSessionInterceptor构建的TokenInterceptor。来自文档:
与普通的令牌拦截器不同, 这个拦截器将尝试 提供智能故障转移 多个请求的事件使用 同一会议。也就是说,它会阻止 后续请求直到第一次 请求已完成,然后改为 返回invalid.token代码, 它会尝试显示相同的内容 回复说原文,有效 动作调用会显示出来 如果没有提交多个请求 首先。