Struts2框架自學之路——結果頁面的配置

目錄

Struts2中結果頁面的配置

  在struts.xml核心配置文件中,我們可以配置Action類的URL訪問路徑,以及對應執行的方法(默認爲execute),此外,如果方法有返回值還可以配置返回值對應跳轉的頁面或Action。如:

<package name="demo1" extends="struts-default" namespace="/">
    <action name="book" class="com.wm103.action.BookAction">
        <result name="success">/index.jsp</result>
    </action>
    <action name="order" class="com.wm103.action.OrderAction">
        <result name="success">/index.jsp</result>
    </action>
</package>

全局結果頁面

  如果存在多個Action,返回值相同,且處理結果的操作一致,如:上述中請求 /book 和 /order 後,服務器分別執行BookAction、OrderAction的execute方法,方法返回值爲 success 時處理結果的操作一致,均爲:

<result name="success">/index.jsp</result>

則此時可以採用全局結果頁面配置,減少相同的配置。如可以這麼配置:

<package name="demo1" extends="struts-default" namespace="/">
    <global-results>
        <result name="success">/index.jsp</result>
    </global-results>
    <action name="book" class="com.wm103.action.BookAction"></action>
    <action name="order" class="com.wm103.action.OrderAction"></action>
</package>

注:global-results標籤是在package標籤內進行配置,不同package下如果有需要,則需要在對應的package下重新配置。

局部結果頁面

  相對於全局結果頁面的配置,如果 package 標籤下存在某一Action的配置返回值的處理在 全局結果頁面配置 中存在,但 結果操作不一致的話,則需要採用局部結果頁面的配置,即在該action標籤下配置 result標籤,覆蓋全局結果頁面配置對該返回值的處理。如:

<package name="demo1" extends="struts-default" namespace="/">
    <global-results>
        <result name="success">/index.jsp</result>
    </global-results>
    <action name="book" class="com.wm103.action.BookAction">
        <result name="success">/book.jsp</result>
    </action>
    <action name="order" class="com.wm103.action.OrderAction"></action>
</package>

  此時,訪問 /book 後 BookAction 執行 execute方法返回值 success 是轉發到 book.jsp,而不是 index.jsp了。

result標籤的type屬性

  result標籤除name屬性外,還有一個type屬性,該屬性用於指定“到路徑裏面的方式”,轉發OR重定向。
(1)針對頁面的type屬性值
  type屬性的默認值爲dispatcher,即轉發到某個頁面。如:

<result name="success">/book.jsp</result>
<result name="success" type="dispatcher">/book.jsp</result>

  type屬性值爲redirect時,表示將重定向到某個頁面。如:

<result name="success" type="redirect">/book.jsp</result>

(2)針對Action的type屬性值
  type屬性值爲chain時,表示請求將轉發到某個Action。(一般不使用)如:

<result name="success" type="chain">order</result>

  這裏表示BookAction的execute返回值是success時,將請求轉發到另一個Action訪問路徑。這裏result標籤體的值是同個namespace下(不同package也可以,只要package的namespace相同即可)的某一action標籤name屬性值。如這裏配置的order是根據該action標籤中name屬性的值填寫的:

<action name="order" class="com.wm103.action.OrderAction"></action>

  type屬性值爲redirectAction時,表示請求將重定向到某個Action。如:

<result name="success" type="redirectAction">order</result>

  這裏result標籤體中的值填寫方式同上。

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