2012-12-18 86 views
0

我有几个简单的动作:Struts 2双表单提交 - 为什么?

<action name="edit" class="EditAction"> 
    <result>/WEB-INF/jsp/form.jsp</result> 
</action> 

<action name="preview" class="PreviewAction"> 
    <result>/WEB-INF/jsp/preview.jsp</result> 
    <result name="input">/WEB-INF/jsp/form.jsp</result> 
</action> 

<action name="store" class="StoreAction"> 
    <result>/WEB-INF/jsp/confirmation.jsp</result> 
    <result name="input">/WEB-INF/jsp/preview.jsp</result> 
</action> 

<global-results> 
    <result name="invalid.token">/WEB-INF/jsp/invalidToken.jsp</result> 
</global-results> 

和经典场景:用户使用文本输入,按保存交互,查看预览页面,然后按保存它来保存数据,而不双击按钮,刷新页面等

为什么双提交可以发生在这种情况?

+0

它是否真的发生在你身上?你使用的是JavaScript吗? –

+1

已经在这里讨论:http://stackoverflow.com/a/13529656/1654265 –

回答

1

即使我在浏览器刷新struts2中有双重表单提交问题。我使用post-redirect-get模式解决了问题,以避免双重或重复的表单提交。发生这种情况的原因是,基于POST请求点击“刷新页面”来响应请求将重新发出POST请求。它会重复您为了双击按钮而到达当前页面的操作。它发生在struts2中的成功和错误。 我建议您在必要时进行此更改。

<action name="onStoreRedirect"> 
    <result name="success" type="redirect">store</result> 
</action> 

<action name="store" class="StoreAction"> 
    <result>/WEB-INF/jsp/confirmation.jsp</result> 
    <result name="input">/WEB-INF/jsp/preview.jsp</result> 
</action> 
相关问题