redirectAction雖然是可以再觸發下一個action物件,但其參數等等可以在址列上看到
如果不想用 get的方式,就用chain的方式來把請求傳到下一個action,不過網址列可是會維持在目前的這個action,
參考以下:
==============struts.xml片段======================
<action name="AttendanceHandler" class="actions.events.AttendanceHandler">
<result name="toAttendance" type="chain">
<param name="actionName">Attendance</param>
<param name="namespace">/events</param>
</result>
</action>
<action name="*" class="actions.events.{1}">
<result>/views/events/{1}.jsp</result>
<result name="redirect" type="redirect">${redirectUrl}</result>
</action>
======================================================
我們在執行完「AttendanceHandler.action」後,要再進入「Attendance」這個action進行請求
即可用此方式完成,當時如果你不怕網址會被人看出參數及值的話,就可以用redirectAction
注意,用chain的方式時,因為是要把request参數往後傳,所以在進入目前action時的參數名稱也要跟下個action的參數名稱一樣,這樣才不會銜接不起來
如:
欲從AttendanceHandler處理後,再請求Attendance的action,其中Attendance.java,有個eventId的屬性(自然也有getEventId/setEventId),所以在AttendanceHandler也要有getEventId/setEventId及eventId屬性,這樣可以串聯action時,不會雞同鴨講,造成後面的action無法執行
至於兩者之間的真正差異,請參考http://blog.csdn.net/jazywoo123/article/details/8292241