本人正在学习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啊)?
<result name="success" type="redirect">c.action?usename=${#abc123}这样可以取到值
那么应该如何解决问题呢?我相信很多人通过重定向把参数username从action A传到action B,不希望重定向的参数username传到action C的啊
谢谢楼上,可我还是想用回redirect-action刚才在想,是不是用于Action C也有成员变量username,所以才使到struts2把username从A经过B“遗传”到C呢?
把你的struts.xml贴出来看看。
参考:
一定要注意: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" />
谢谢gaoxulaiguo,就是你说的原因!多谢指教!