2013年2月9日 星期六

struts 二三事--redirectAction與chain差異

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