2016-12-28 45 views
-1

我用struts做登記和冬眠這裏現在面臨當我運行我的項目像一個問題,我會得到localhost/ProjectName/registration.jsp如何解決網址而獲得的響應頁面在Struts2

當我提交的數據,成功保存在數據庫之後的數據在數據庫中保存的數據要尋找registration.jsp作爲響應的頁面,但那個時候URL將會localhost/ProjectName/actionName.action一樣,如果我刷新頁面,最後添加的記錄將被再次添加

JSP表單

這將創建一個問題

struts.xml的

<action name="register" class="-----------"> 
<result name="success">registration.jsp</result> 
</action> 
+0

@Andrea Ligios知道的事情,請不要將其標記爲重複的,因爲很多人都在做一些工作,人民的好知識,他們可能沒有良好的溝通,解釋 –

+1

「知道以前的事情」之前?您正在尋求一種防止雙重提交的方法,即PRG(Post-Redirect-Get)。你正在使用Struts2。答案(你的問題是重複的)解釋瞭如何用Struts2實現PRG。爲什麼我不認爲這是重複的? –

+0

是的,這是PRG我已經嘗試了這種方式,但在重定向之前我應該​​顯示註冊成功的消息我該怎麼做 –

回答

0

您應該按照PRG patternthis答覆中提到。創建一個新的行動會後重定向操作結果返回JSP頁面。

<action name="registration"> 
    <interceptor-ref name="store"> 
    <param name="operationMode">RETRIEVE</param> 
    </interceptor-ref> 
    <interceptor-ref name="defaultStack" /> 
    <result name="success">registration.jsp</result> 
</action> 

<action name="register" class="-----------"> 
<interceptor-ref name="store"> 
    <param name="operationMode">STORE</param> 
    </interceptor-ref> 
    <interceptor-ref name="defaultStack" /> 
    <result name="success" type="redirectAction">registration</result> 
</action> 

您可以使用Message Store Interceptor存儲在HTTP會話中執行訊息/錯誤。行動類應執行ValidationAware

商店攔截工作兩個動作之間,他們中的一個存儲消息,另一個檢索。

攔截器到ValidationAware動作的消息/錯誤 和字段的錯誤存儲到HTTP會話,例如,這將是檢索 在稍後階段。這使得行動的消息/錯誤和現場 錯誤可用更長,只是特定的HTTP請求。

如果會話不存在,什麼都不會被保存,以後可以檢索 。在其他方面,應用程序負責打開 會議。

STORE模式下,攔截器會將動作的消息/錯誤和字段錯誤存儲到HTTP會話中。

RETRIEVE模式,攔截器將檢索存儲 行動的消息/錯誤和CRC錯誤,並把它們放回 ValidationAware行動。

AUTOMATIC模式,攔截器將始終檢索存儲 行動的消息/錯誤和CRC錯誤,並把它們放回 ValidationAware行動,而行動執行後,如果結果是 的ServletRedirectResult的情況下,動作的消息/錯誤 和字段的錯誤進入自動被存儲在HTTP會話..


+0

我試過這種方式,但在重定向之前,我應該顯示如註冊成功的消息我該如何做到這一點 –

+0

將動作消息添加到動作上下文中。 –

+0

無論你喜歡什麼,你也可以在會話中顯示消息。 –

相關問題