result的type属性



首先看一下在struts-default.xml中对于result-type的定义:

<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>

(1)、chain:用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息.

type=“chain” 用于action跳转。 (匹配的是action的name属性)

<action name="action1" class="org.Action1">
     <result name="success" type="chain">action2.do</result>
</action>
<action name="action2" class="org.Action2">
     <result name="success">login.jsp</result>
</action>

(2)、dispatcher:用来转向页面,通常处理JSP.

type=“dispatcher” 为默认,用于jsp页面跳转

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

完整的写法为:

<result name="success" type="dispatcher">
     <param name="location">/index.jsp</param>
</result>

(3)、freemaker:处理FreeMarker模板.

(4)、httpheader:控制特殊HTTP行为的结果类型.

(5)、redirect:重定向到一个URL,被跳转的页面中丢失传递的信息,如request.

type=“redirect” 重定向到jsp、action、外部网址 (请求两次,请求的结果从根路径初开始查找,可以请求本地

服务器以外的内容比如请求baidu网)

<result name="success" type="redirect">/index.jsp</result>
<result name="success" type="redirect">/login.do</result>
<result name="success" type="redirect">http://www.baidu.com</result>

<package name="lookers" extends="struts-default" namespace="/">
    <action name="lookermanager_list"
class="com.uplooking.club.looker.action.LookerManager" method="list">
        <result name="list">/looker/list.jsp</result>
    </action>
    <action name="lookermanager_add" class="com.uplooking.club.looker.action.LookerManager"
method="add">
        <result name="add" type="redirect">/uplooking/lookermanager_list</result>
    </action>
</package>

重定向时带参数处理方法:

1.type=“redirect”:

<result name="success" type="redirect">/login.do?userId=${userId }</result>

2.type=“redirect-action”:

(6)、redirectAction:重定向到一个Action,跳转的页面中丢失传递的信息.(请求两次,匹配的是请求不加“/”,只能请求

本地服务器的内容)

type=“redirect-action” 重定向到另外一个action

<result name="success" type="redirect-action">
     <param name="actionName">login.do</param> 重定向action名
     <param name="userId">userId</param>带的参数
</result>

<package name="lookers" extends="struts-default">
   <action name="lookermanager_list"
class="com.uplooking.club.looker.action.LookerManager" method="list">
      <result name="list">/looker/list.jsp</result>
   </action>
   <action name="lookermanager_add"
class="com.uplooking.club.looker.action.LookerManager" method="add">
      <result name="add" type="redirectAction">uplooking/lookermanager_list</result>
   </action>
</package>

原始页面布局(第 2 页)

(7)、stream:向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据.

(8)、velocity:处理Velocity模板.

(9)、xslt:处理XML/XLST模板.

(10)、plainText:显示原始文件内容,例如文件源代码.

type=“plaintext” 跳转显示源代码

<result name="err" type="plaintext">
    <param name="location">具体的位置</param>
    <param name="charSet">字符规范(如GBK)</param>
</result>

重点说一下redirect和redirectAction的区别:

(1)使用redirect需要后缀名,使用redirect-action可以不需要后缀名.

(2)type=“redirect"的值可以转到其它命名空间下的action,而redirect-action只能转到同一命名空下的action,因此它可以省

略.do的后缀直接写action的名称.

(1)type=“dispatcher” 为默认,用于jsp页面跳转

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

完整的写法为:

<result name="success" type="dispatcher">
     <param name="location">/index.jsp</param>
</result>