struts2-action间跳转及间传值

通过设置action的返回result类型为action来跳转其他action,同时,通过parms参数传值。这种方式有个缺点,是action之间传值的方式是GET方式,跳转的action的url中会带上参数


package com.zzn.action;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.ActionSupport;

@Results(
    {
        @Result(name="aaaa",location="aaaa!aaaa.action",type="redirect",
                params = {"flag","${flag}","flag2","${flag2}"}),
        @Result(name="bbbb",location="bbbb!bbbb.action",type="redirect",
                params = {"flag","${flag}","flag2","${flag2}"}
                )
    }
)
public class MyAction extends ActionSupport{
    private String flag ;
    private String flag2;

    public String jump(){
        if(flag!=null&&flag.equals("aaaa")){
            return "aaaa";
        }else{
            return "bbbb";
        }
    }
    
    public String getFlag() {
        return flag;
    }

    public void setFlag(String flag) {
        this.flag = flag;
    }


    public String getFlag2() {
        return flag2;
    }


    public void setFlag2(String flag2) {
        this.flag2 = flag2;
    }

}


package com.zzn.action;

import com.opensymphony.xwork2.ActionSupport;

public class AaaaAction extends ActionSupport {
    
    private String flag;
    private String flag2;
    
    public String aaaa(){
        System.out.println("我调用的aaaa方法"+flag+"~~~~~"+flag2);
        return "page";
    }
    
    public String getFlag() {
        return flag;
    }

    public void setFlag(String flag) {
        this.flag = flag;
    }

    public String getFlag2() {
        return flag2;
    }

    public void setFlag2(String flag2) {
        this.flag2 = flag2;
    }
}


package com.zzn.action;

import com.opensymphony.xwork2.ActionSupport;

public class BbbbAction extends ActionSupport {
    private String flag;
    private String flag2;
    

    public String bbbb(){
        System.out.println("我调用的bbb方法"+flag);
        return "page";
    }
    
    public String getFlag() {
        return flag;
    }

    public void setFlag(String flag) {
        this.flag = flag;
    }
    
    public String getFlag2() {
        return flag2;
    }

    public void setFlag2(String flag2) {
        this.flag2 = flag2;
    }
}


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

<action class=”” name=””>

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

</action>

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

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

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

</action>

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

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

    <result name="success" type="redirect-action">

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

    </result>

</action>

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

 

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

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

    <result name="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方法.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值