http://www.2cto.com/kf/201303/195097.html
有关Struts2中action间的跳转可分为两部分,一部分为同一个包中action间的跳转,还有一个就是在不同包中action间的跳转。不管是不是在同一个包中,首先要明确的是要实现跳转,必须要将result中type属性设为chain或redirectAction或者是redirect。
<package name="struts" extends="struts-default">
<action name="login" class="com.aihua.example.LoginAction">
<result name="success" type="redirect">register.action </result>
<result name="error">/index.jsp </result>
</action>
<action name="login" class="com.aihua.example.LoginAction">
<result name="success" type="chain" >action 名称 </result>
<result name="error">/index.jsp </result>
</action>
</package>
当type为chain 时,说明是action链,运行完第一个action java文件接着会运行第二个action JAVA 文件,相当于forward(客户端的url不会改变).当type为redirect时,说明会跳转到第二个action的url (客户端的url会改变)
通常,在配置文件中都是在一个动作中声明它要引用的JSP如:
<action class=”” name=””>
</action>
有时候我们需要将结果指向另一个动作.可以如此:
<action name ="rsa01002Action"class ="rsa01002Action">
</action>
将类型指定为redirect这就相当于JSP中的跳转一样.还有种写法:
<action name ="app09002Action"class ="app09002Action">
</action>
这样和上面的差不多,只是将要跳转到的动作的名字放在了外面.但下面这种写法传的是动作的名称,所以后面没有加.do.前面写法后有,但好象不加也行.
上面两种方法就是动作间的跳转,但有时候需要在跳转的时候传递一些参数.参数可能是字符,也可能是其它对象.方法如下:
<action name ="app09002Action"class ="app09002Action">
</action>
下面一个参数就是要传递过去的参数.name=”userId”即app10001Action(跳转目标)中接收参数的变量名.而${userId}表示是app09002Action(跳转起点)中在传过去的变量.这个变量的值要在execute()方法完成前进行赋值,即在该方法的return 语句前进行赋值.当然,为了struts框架能获得该值,并能设置到目录动作中,需要我们将起点动作和目录动作中的对应的两个变量都设为public或设置对应的getter,setter方法.
<action name="action1" method="" class=""> <result name="success" type="chain"> <param name="actionName">action2</param> <param name="mm">${kk}</param> <param name="jj">${gg}</param> </result> </action> 其中的上面的mm和jj都是action1中定义的变量,有get、set方法。其中的kk,gg则是第二个action2的里面的变量了,需要提供get、set方法,这样就能获得action1传递给action2的值了。 希望对你有帮助,以上是在测试下能运行的。