public void method1()
{
   -----some code
}
public void method2()
{
   -----some code
}
-----------------------------
正常的action执行流程
method1();
method2();如果我把method1改成
public void method1()
{
   ServletActionContext.getResponse().sendRedirect(rUrl);
}
--------------------------
我要的结果是method1执行后,不去执行method2...直接跳转到rUrl页面
但问题是,method2还是会执行....有什么方法可以实现我的需求吗?

解决方案 »

  1.   

    最简单的方法就是把Method2()注释掉,如果后面要用的话,就用另一个Action再调用就OK了
      

  2.   

    ServletActionContext.getResponse().sendRedirect(rUrl);只是告诉浏览器去重定向一下rUrl。和其他的普通代码一样,这一行执行完了就执行下一行,如果不想执行下面的,你可以用
    if ,return, 等自己控制哪些代码需要执行,哪些代码执行完了以后就立即返回不再执行下面的程序。
      

  3.   

    struts配置文件里不是可以让你直接调用struts里固定的方法的嘛
    把method设置为一个方法明,他就直接进入action调用这个方法
      

  4.   

    method1写在一个action里,如action1,method2写在一个action里,如action2,执行完action1再执行action2
      

  5.   

    我不明白。为什么你action里面的方法全都会执行。难道你每个请求到action都会把action里面的方法全都执行一遍?注意,请求action是请求到action里面某一个方法。如果不指明方法的话默认也是请求excute方法啊。
      

  6.   

    重定向语句后面加个 return null;
      

  7.   

    method2() 删了
    或者method1() 后直接MAPPING返回
      

  8.   

    public class actionbase : extends actionsupport
    {
    public void prepare()
    {
       if(没登录)
       {
               ServletActionContext.getResponse().sendRedirect(rUrl); 
               return;
       }   
    }
    }public class testaction extends actionbase
    {
        public string excute()
        {
            //some code
        }
    }------------------------我想要的
    actionbase是所有action的基类,我想如果没登录的话,直接就跳转到rUrl页面但是很怪,不会马上跳转,还是会去
    执行testaction的excute方法?????????????注:执行顺序是
    prepare();
    excute();
      

  9.   

    你是想判断一下是否登陆,没有登陆就跳回登陆页面是吧。用拦截器做吧,这样很不规范。前面已经说了,你请求testaction 的话会默认调用它的excutef方法。
      

  10.   

    method1()返回值判断,不去执行 method2()
      

  11.   

    public class actionbase : extends actionsupport 

    public void prepare() 

      if(没登录) 
      { 
              ServletActionContext.getResponse().sendRedirect(rUrl); 
              return; 
      }  

    } public class testaction extends actionbase 

        public string excute() 
        { 
            //some code 
        } 
    } ------------------------我想要的 
    actionbase是所有action的基类,我想如果没登录的话,直接就跳转到rUrl页面但是很怪,不会马上跳转,还是会去 
    执行testaction的excute方法????????????? 注:执行顺序是 
    prepare(); 
    excute();
      

  12.   

    public void prepare()
    {
      if(没登录)
      {
              ServletActionContext.getResponse().sendRedirect(rUrl);
              return;
      } 
    }

    在return处控制跳转页面
      

  13.   

    除了用拦截器就没其它方法了吗?java太烂了......net中redirect是可以中止当前线程的...真汗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  14.   

    public class actionbase : extends actionsupport 

    public void prepare() 

      if(没登录) 
      { 
              ServletActionContext.getResponse().sendRedirect(rUrl); 
              return; 
      }  

    } public class testaction extends actionbase 

        public string excute() 
        { 
            //some code 
        } 
    } ------------------------我想要的 
    actionbase是所有action的基类,我想如果没登录的话,直接就跳转到rUrl页面但是很怪,不会马上跳转,还是会去 
    执行testaction的excute方法????????????? 注:执行顺序是 
    prepare(); 
    excute();
      

  15.   

    struts2 是不能在程序里面执行跳转的...只能在struts2.xml中配置比如你可以再
    public String method1() 

      -----some code 
      return "success";

    public void method2() 

      -----some code 
    }然后在xml中配置<result />
    才可以跳转...在程序中配置是不行的...
      

  16.   


    return null--不进行跳转。
      

  17.   

    是啊 不要抓住自己的想法不放,学习框架,学习编程尽量去学习他们的规范,养成好的习惯,类名都不大写开头....struts2也已经有了很好的登陆跳转解决方案,为什么不去学着用而要自己去写一个?搞了半天只是误入歧途而已
      

  18.   

    对于成员方法来说 ,你不调用它,它怎么会执行呢,
    对于楼主说
        正常的action执行流程 
        method1(); 
        method2();
    就更不理解了,除非你是在struts.config.xml中指定的成员方法中调用了这两个方法 
    不然的话,不可能执行完method1 又去执行method2