struts2 result chain 和redirectAction区别

chain可以把参数传过去

比如第一个action有的方法里有

public String listMenu(){
		//获取权限组id
		String roleId=request.getParameter("roleId");
}


那么

<result name="updateMenu" type="chain">
            <param name="actionName">sysRoleAction_listMenu</param>

</result>

 

再次调用listMenu()这个方法中的String roleId=request.getParameter("roleId");还可以得到roleId的值,就算是不同的action也可以得到,说明roleId这个参数一直在action中传递着。

而如果换成redirectAction则不会得到roleId的值了,说明redirectAction不会传递参数。

也就是说如果想要转到另一个action的方法时,还需要得到之前那个action里面的参数(比如request里面的参数),就用chain

转向的方法不需要之前action里面的参数,则用redirectAction。

举个chain的例子

先看一下struts.xml的配置

 <!-- 处理菜单权限 -->
         <result name="listMenu">/WEB-INF/page/sys/role/menu/view.jsp</result>
         <!--转发到action -->
         <result name="updateMenu" type="chain">
            <param name="actionName">sysRoleAction_listMenu</param>
            <param name="namespace">/sys</param>
         </result>  
 

然后用转向sysRoleAction_updateMenu,并且传入传入roleId参数

 <s:form name="ActionForm" method="post" action="sysRoleAction_updateMenu.do" namespace="/sys">
<s:hidden name="roleId"  value="%{#request.sysRole.id}"></s:hidden>
	public String updateMenu(){
  String roleId=request.getParameter("roleId");return "updateMenu";}

 然后转到sysRoleAction_listMenu,在listmenu()方法中仍然能接受roleId参数,说明参数通过chain传过去了

public String listMenu(){
  //获取权限组id
  String roleId=request.getParameter("roleId");如果换用redirectAction则listMenu()无法接受ids参数了。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值