<action name="r1">
<result type="dispatcher">/r1.jsp</result> <!-- 服务器端跳转 -->
</action>
<action name="r2">
<result type="redirect">/p/r2.jsp</result> <!-- 客户端跳转 -->
</action>
<action name="r3">
<result type="chain">r1</result> <!-- 服务器端跳转 -->
</action>
<action name="r4">
<result type="redirectAction">r2</result> <!-- 客户端跳转 -->
</action>
对于r1:这是默认跳转方式,实现服务器端跳转,只能跳转到jsp、html等页面,不能跳转到另一个action。
对于r2:实现客户端跳转,只能跳转到jsp、html等页面。
对于r3:服务器端跳转到另一个action,一般不要加“/”,如果action在另一个package中(p),用param(如下,查文档) 。
<result type="chain">
<param name="actionName">dashboard</param>
<param name="namespace">/secure</param>
</result>
对于r4:客户端跳转到另一个action。
对于 r3 和 r4 ,都要注意跳转后的跳转方式,注意浏览器的地址变化。
<global-results>
<result name="mainpage">/main.jsp</result>
</global-results>
动态结果集:
<action name="user" class="com.demo.UserAction" >
<result name="error">/User_ERROR.jsp</result-->
<result>${r}</result>
</action>
${r} 表示在struts.xml中取得在value stack中的 r 的值。
带参数的结果集:
<action name="user" class="com.demo.param.UserAction" >
<result type="redirect">/user_success.jsp?t=${type}</result>
</action>
此时页面redirect到带参数的user_success.jsp。
如果此是是chain到另一个action,如果也需要把当前action的type传过去的话,则不需要通过上面的方式,因为这时候两个action共享同一个value stack。
(一个request只有一个value stack)
图解: