打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
struts 2 action type为chain传值
loky:

<struts>

<package name="resultTest" extends="struts-default">

<action name="test" class="com.asm.TestAction">

<result name="success" type="chain">

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

</result>

</action>

<action name="test2" class="com.asm.Test2Action">

<result name="success">/test2Suc.jsp</result>

</action>

</package>

</struts>

在本实例中,我们还在TestAction中设定一个username字段,并在execute方法执行为它赋了值(补充:要传递的参数在第一个action有getter和setter在第2个action也要有才能正常传递

),并在test2Suc.jsp中引用了此值。其实这种做法在web开发中还是很有用处,比如可以代替隐藏域。需要注意的是之所以在action的传递中能把设定的这个值保存下去,主要是因为转向都是服务器跳转。

如果我们跳转时采取了客户端跳转,比如在test2 action的result中指定type类型为redirect,要想传递参数可以在result指向的jsp页面中附加参数即可,我们可以在test2 action的result中写成:
<result name="success" type="redirect">
/test2Suc.jsp?username=${username}
</result> 

随后在test2Suc.jsp页面中引用时会出现三个问题:1.EL表达式引用失效,(EL表达式应该使用${param.username}形式)。我们也可以使用<%=request.getParameter("username")%>获取参数值。  2.由于在前面的TestAction中设定的值为中文,而附加到这里的uri请求的参数后面时会出现乱码问题。(可以使用URI编码再解码解决此问题)3.值栈取值失效:因为每一次request共享同一个值栈,所以服务器端的forward跳转也是能共享同一值栈得。但是着当test action执行后把请求交由test2 action时,test2 action采取的是redirect重定向到test2Suc.jsp页面,这时其实就是重发的一次request,所以在test action保存的值栈内容全部失效。这也就是为什么我们要附加参数的原因。而参数是保存在actionContext中,所以采用了#的方式来取出值。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于struts2中namespace和s:form action和form action 路径问题
struts2 返回类型
补充的一些前面的struts2。。。
action接收请求复合类型参数(反射机机制原理)
Struts中FormBean与国际化
Struts2中jsp前台传值到action后台的三种方式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服