struts2双提交问题

时间:2010-07-20 12:30:12

标签: struts2

我正在使用struts2.1.8。在这里,我想处理双重提交。 truts2提供了TokenInterceptor。因此,如果我提交了两次,则返回“invalid.token”作为结果名称。但我想显示我已提交两次的同一页面。

3 个答案:

答案 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

http://en.wikipedia.org/wiki/Post/Redirect/Get

答案 2 :(得分:1)

查看基于TokenSessionInterceptor构建的TokenInterceptor。来自文档:

  

与普通的令牌拦截器不同,   这个拦截器将尝试   提供智能故障转移   多个请求的事件使用   同一会议。也就是说,它会阻止   后续请求直到第一次   请求已完成,然后改为   返回invalid.token代码,   它会尝试显示相同的内容   回复说原文,有效   动作调用会显示出来   如果没有提交多个请求   首先。