前言 Struts 2中的Result是作為返回結果的,時當一個action處理完之后返回字符串的結果碼??蚣芸梢愿鶕@個返回的字符串,映射到指定的頁面。result元素可以分為兩部分:一是結果映射,一部分是返回結果類型。 結果映射 result有兩個屬性可以配置:name屬性和type屬性。其中的name屬性主要用來指定資源的邏輯名稱,實際名稱在標簽內部指定。type屬性就是result的返回類型。要注意的是,這兩個屬性都不是必須的,當我們沒有配置這兩個屬性的時候,實際上框架為我們指定了默認值,其中name屬性的默認值是success,type屬性的默認值是dispatcher(轉發(fā))。正因為框架為我們設定了默認值才可以不用配置。 我們之前的配置都是使用result直接配置,實際上result標簽還有一個子標簽
這里指示資源的實際位置使用param標簽,但是如果result的type屬性是dispatcher的時候,上面的param標簽是可以直接省略的,這也是前面沒有寫param標簽也沒有報錯的原因。 結果類型 結果類型中常用的有四種:dispatcher、redirect、redirectAction和chain。其中dispatcher已經說過相當轉發(fā),redirect相當于重定向,redirecAction也是重定向,只不過使用該結果類型的時候,一般是重定向到某個action,最后一種主要用于action的鏈式處理。其他的還有plainText(用于顯示頁面的原始內容,比如Servlet或者jsp的源代碼)、xslt等。 第1種:dispatcher dispatcher也是框架默認的結果類型,其實現類是org.apache.struts2.dispatcher.ServletDispatcherResult,該類中有兩個屬性:location和parse。它們也可以在struts.xml文件中直接配置:
其中的location參數用于指定資源的實際位置,該參數也是框架默認添加的;parse參數是一個布爾變量,當為true的時候,表示將解析location參數中的OGNL表達式(后面還會介紹)??蚣苤衟arse參數的默認值也是true。 第2種:redirect 當使用該結果類型的時候,框架后臺會使用response對象的sendRedirect方法進行重定向,重定向與轉發(fā)還是不同的,具體體現在以下幾個方面:
如果需要在重定向的時候把原來的有關信息發(fā)送到重定向后的頁面中,則需要使用OGNL表達式${username}(比如在登錄成功后重定向到歡迎頁面,在歡迎頁面就可以使用OGNL表達式把用戶名傳遞過去),比如下面的配置:
在登錄成功之后重定向到success.jsp頁面的時候,可以觀察到瀏覽器的地址欄把用戶名作為參數傳遞到success.jsp頁面。 第3種:redirectAction 此種結果類型與redirect一樣,底層都是調用Response對象的sendRedirect方法進行重定向的,這兩者的區(qū)別是redirect結果類型一般是針對視圖的,而redirectAction則是重定向到某個action,所以如果在action處理之后還要交給另一個action繼續(xù)處理,那么使用redirecAction結果類型。 redirecAction結果類型有兩個參數:actionName(指定需要重定向的action)和namespace(指定action所在的命名空間,如果沒有指定該參數,框架會從默認的namespace中去尋找)。比如下面的配置:
全局結果 全局結果的的主要作用是,在有多個action都需要返回到某個頁面的時候,就可以全局結果。比如在電商網站購物的時候,查看訂單,添加商品到購物車都需要先登錄,那么就可以把登錄作為一個全局結果。全局結果是在包中定義的,這樣該包下的所有action都可以共享該全局結果了。 配置全局結果的方式與在action中直接配置result不太一樣,全局結果是在global-results標簽中定義的。比如下面的配置:
|
|