struts2 Action之间跳转

http://www.2cto.com/kf/201303/195097.html

有关Struts2中action间的跳转可分为两部分,一部分为同一个包中action间的跳转,还有一个就是在不同包中action间的跳转。不管是不是在同一个包中,首先要明确的是要实现跳转,必须要将result中type属性设为chain或redirectAction或者是redirect。 

 
一、同一个包中的跳转 
 
在Action的results里面的type类型配置为“chain”,跳转的Action的URL直接写要跳转到的Action名称即可。 
 
如下面的package,从 浏览器访问r1.action之后跳转到r2.action,最后跳转到1. jsp页面显示给用户! 
 
Java代码  
<package name="report" extends="struts-default" namespace="/">     
    <action name="r1" class="R1">     
          <result name="success" type="chain">r2</result>     
    </action>     
    
    <action name="r2" class="R2">     
          <result name="success" type="dispatcher">/1.jsp</result>     
    </action>     
</package>    
 
 
二、不同包中的跳转 
 
需要使用param标签,其中param的name属性不需要修改,只需修改标签对应的值即可,如下,只需修改ss及/pp就行。 
 
从浏览器访问r1.action之后跳转到package为paramsRedirect中的r2.action,最后跳转到1.jsp页面显示给用户! 
 
 
Java代码  
<package name="resultType" namespace="/r" extends="struts-default">     
     <action name="r1">     www.2cto.com
         <result type="chain">     
              <param name="actionName">r2</param>     
              <param name="namespace">/pp</param>  
              <param name="method">method123</param>       
         </result>     
     </action>     
</package>     
    
<package name="paramsRedirect" namespace="/pp" extends="struts-default">     
     <action name="r2">     
        <result>/1.jsp</result>     
     </action>     
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
例如从你的login.action到register.action  有两种实现方式
1. 设置type="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> 
      </package> 
2.设置 type="chain"
<package  name="struts" extends="struts-default"> 
          <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会改变)
 
 
 
 
struts2-action间跳转及间传值 (

通常,在配置文件中都是在一个动作中声明它要引用的JSP如:

<action class=”” name=””>

         <result name=””>xxx.jsp</result>

</action>

有时候我们需要将结果指向另一个动作.可以如此:

<action name ="rsa01002Action"class ="rsa01002Action">

    <resultname="success"type="redirect">rsl06001Action.do</result>

</action>

将类型指定为redirect这就相当于JSP中的跳转一样.还有种写法:

<action name ="app09002Action"class ="app09002Action">

    <resultname="success"type="redirect-action">

       <param name="actionName">app10001Action</param>

    </result>

</action>

这样和上面的差不多,只是将要跳转到的动作的名字放在了外面.但下面这种写法传的是动作的名称,所以后面没有加.do.前面写法后有,但好象不加也行.

 

上面两种方法就是动作间的跳转,但有时候需要在跳转的时候传递一些参数.参数可能是字符,也可能是其它对象.方法如下:

<action name ="app09002Action"class ="app09002Action">

    <resultname="success"type="redirect-action">

       <param name="actionName">app10001Action</param>

       <param name="userId">${userId}</param>

    </result>

</action>

下面一个参数就是要传递过去的参数.name=”userId”即app10001Action(跳转目标)中接收参数的变量名.而${userId}表示是app09002Action(跳转起点)中在传过去的变量.这个变量的值要在execute()方法完成前进行赋值,即在该方法的return 语句前进行赋值.当然,为了struts框架能获得该值,并能设置到目录动作中,需要我们将起点动作和目录动作中的对应的两个变量都设为public或设置对应的getter,setter方法.

 
 
 
 
 
struts2 redirect 实现action之间跳转 如何传2个值
 
 
<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的值了。 
希望对你有帮助,以上是在测试下能运行的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值