本人正在学习sturts2的redirect-action机制,发现了一个很奇怪的问题。原来的软件架构是这样子的:action A -> action B -> action C。现在希望通过redirct-action,把参数username=abc123从action A传给action B;成功问题出现在action B到action C的跳转。action B是通过结果返回页面b.jsp上面的action url跳转到C的:<a href="<s:url action="C" />">click here</a>自从在A到B加入redirect-action之后,在浏览器上面,b.jsp到C的url变成了:C.action?username=abc123就好像A到B的redirect会遗传到B到C……是什么原因呢?可以怎样避免呢(因为不见得我需要把username告诉action C啊)?

解决方案 »

  1.   

    大哥!你要做什么啊!struts.xml
     <result name="success" type="redirect">c.action?usename=${#abc123}这样可以取到值
      

  2.   

    谢谢1楼的回答我想做的只是希望把username=abc123从action A传到action B,并且已经成功了(在struts.xml中成功通过redirect-action配置)现在的问题是,不知道为啥在action B跳转到action C的过程当中,username=abc123会自动生成在C.action之后(即b.jsp上action C的url变为:C.action?username=abc123)
      

  3.   

    通过redirct-action,不是重定向吗,可以传递参数过去吗?
      

  4.   

    我觉得应该是访问Action的时候,Action会被压入栈顶的原因.!
      

  5.   


    那么应该如何解决问题呢?我相信很多人通过重定向把参数username从action A传到action B,不希望重定向的参数username传到action C的啊
      

  6.   

    换成<result type="redirect">A.action?username=abc123</result>
      

  7.   


    谢谢楼上,可我还是想用回redirect-action刚才在想,是不是用于Action C也有成员变量username,所以才使到struts2把username从A经过B“遗传”到C呢?
      

  8.   

    不会出现LZ说的情况啊。
    把你的struts.xml贴出来看看。
      

  9.   

    struts2 的url标签有一个includeParams属性,值设置成none就OK。
    参考:
    一定要注意:url中includeParams的属性的默认值是get,如果没有在struts.xml指定新的值,那么使用url标签引用的所有的静态文件都会带上通过get方法传递的参数值。
    另外:includeParams的属性值还有none、all
    all,是把get和post中的参数加入到url参数中 ;
    none是不把参数加入到url中;
    也可以改变默认值在struts.xml中或者properties中都可以:
    如:<constant name="struts.url.includeParams" value="none" />
      

  10.   


    谢谢gaoxulaiguo,就是你说的原因!多谢指教!