2014-07-04 110 views
1

您好設計在頁面上用strut動作類與方法。當我調用方法正確完成並獲得成功結果時。但是當我刷新成功頁面時,我再次提交數據庫中的前一頁值時遇到問題。如何避免這一點。Struts動作重新提交

我的第一個JSP頁面形式

<form name="manualorder" action="manual_order" onsubmit="return validation();"> 

struts.xml的

<action name="purchaseorder" class="materialTypeMasterAction" method="createorder" > 
    <result name="success">/pages/procurement/PurchaseOrder.jsp</result> 
    </action> 



    <action name="manual_order" class="materialTypeMasterAction" method="enquiry_process"> 
    <result name="success">/pages/procurement/success.jsp</result> 
    </action> 

當我刷新這個頁面的成功再次它和call enquiry_process method提交我在createorder方法在操作創建的第一個前值一。

+0

使用重定向後得到的。 –

+0

+1爲您的嘗試:) – rachana

+0

您需要使用重定向操作 –

回答

0

使用post-redirect-get pattern

成功後,重定向到"success"頁面。這樣,如果用戶刷新,他們只是再次獲得相同的頁面。

請參閱此鏈接Preventing Form Resubmission (due refreshing)也看到Preventing Double Form Submission 這可能會幫助你

+0

@ user3805315我更新了我的答案,並添加了一個鏈接,該鏈接可能會在重定向success.jsp後幫助您 – rachana

+0

。我嘗試刷新那個success.jsp頁面。如果我刷新那個頁面,它會提交重複的值,那麼jsp頁面在中給出了什麼。 – user3805315

1

您可以使用重定向行動解決您的問題。 只要改變你的struts文件,如下(我已經增加了一個行動的成功:

<action name="purchaseorder" class="materialTypeMasterAction" method="createorder" > 
    <result name="success">/pages/procurement/PurchaseOrder.jsp</result> 
</action> 
<action name="SuccessAction" class="SuccessPage"> 

    <result name="success">/pages/procurement/success.jsp</result> 

<action name="manual_order" class="materialTypeMasterAction" method="enquiry_process"> 
     <result type="redirectAction">SuccessAction</result> 
</action> 

請不要忘記創建SuccessPage

+0

使用'redirectAction'而不是'redirect-action'。 –

+0

我正在使用重定向動作,沒有問題 –

+0

@ButaniVijay由於Struts 2.2.1'redirect-action'已被棄用。對此結果類型使用'redirectAction'。 –