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标签体中的值填写方式同上。

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