Struts2中action之間的跳轉問題

      struts2中result類型有chain、dispatcher、redirect、redirectAction。

 1)dispatcher類型:

              默認跳轉類型,用於返回一個視圖資源(如JSP)。用於頁面轉發,頁面跳轉過程是同一個過程,Action中的數據一直保存。

如<result  name=“success”>/main.jsp</result>與   <result name=“success” type="dispatcher">/main.jsp</result>是相同效果。

2)redirect類型:

                用於重定向到一個頁面、action、網址。把一個http返回碼(SUCCESS)以及返回的頁面位置重新發給服務器,由web服務器產生一個新的HTTP請求,產生新的線程,保存在原Action中的數據無法訪問。如果需要訪問,則在action中帶參數,參數爲一個OGNL表達式,此時該變量必須在前action中有set/get方法,使用${變量名}即可訪問到該數據。

      如:<result name="topic" type="redirect">/deleteuser.action?topicId=${topicId}</result>

3)redirectAction類型:

      與redirect類型用法相同。

      <result name="topic" type="redirectAction">
                <param name="actionName">findTopics</param> //重定向的action名
                <param name="topicId">${topicId}</param> //需要傳遞的參數

                <param name="namespace">重定向Action所在的名字空間</param>//若兩個action不在同一個package下,需要配置該參數
      </result>

4)chain類型:

            用於把相關的幾個action連接起來,共同完成一個功能。處於chain中的action屬於同一個http請求,共享一個ActionContext。

        <action name="step1" class="test.Step1Action"> 
                  <result name="success" type="chain">step2.action</result> 
          </action> 
         <action name="step2" class="test.Step2Action"> 
                   <result name="success">finish.jsp</result> 
        </action>

  若action不在同一個package下,需要配置命名空間這個參數。如下

       

<package name="resultType" namespace="/r" extends="struts-default"> <action name="r1"> <result type="chain"> <param name="actionName">r2</param> <param name="namespace">/pp</param> <param name="method">method123</param> </result> </action> </package> <package name="paramsRedirect" namespace="/pp" extends="struts-default"> <action name="r2"> <result>/1.jsp</result> </action>

5)plaintextj 結果類型:

           用於直接在頁面上顯示源代碼

Xml代碼:

<result name="err" type="plaintext">
<param name="location">具體的位置</param>
<param name="charSet">字符規範(如GBK)</param>
</result>

           


     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章