我有一個登錄動作,在成功執行後重定向到前一頁(我在會話中存儲前一頁,以便稍後可以取回)。在Struts2的,我能找到兩種方式來做到這一點重定向:Struts2重定向到具有未知參數數量的另一個動作
<action name="login" class="com.myapp.login.Login">
<result name="redirect" type="redirect">${previousAction.requestURL}</result>
</action>
在這個例子中,getPreviousAction()getRequestURL()方法(這是一個自制的方法,它不是ntive Struts2的)將被調用和這將返回前一頁面的URL如預期,例如:
somenamespace/index.action
也有另一種類型的重定向:
<action name="login" class="com.myapp.login.Login">
<result type="redirectAction">
<param name="actionName">${previousAction.name}</param>
<param name="namespace">/${previousAction.namespace}</param>
</result>
</action>
我想用這個redirectaction結果因爲它更乾淨。但是,當查詢參數是url的一部分時,我遇到了問題。例如:
somenamespace/index.action?name=john&age=50
我知道我可以添加這些PARAMS在我struts.xml中硬編碼的,但問題是我的登陸行動應該重定向到任何先前調用的動作,我不事先知道哪個查詢參數以前行動了。這是典型的用例不同,你確切地知道你正在重定向到
一個極壞的解決方案,我發現這是加入EVERY帕拉姆可能的,其動作(我在struts.xml中的所有行動都則params的集合)和然後使用以下選項:
<param name="suppressEmptyParameters">true</param>
更好的方法來設置您的參數在請求範圍內,並在您的下一個動作中獲取它們全部 –
http://struts.apache.org/development/2.x/docs/parameters-in-configuration-results.html。 –