redirect、redirectAction等比较

struts2 type="redirectAction"  使用范例讲解

在struts2框架中 有一种重定向类型的使用。下面以具体来说明配置文件中的设置:

<action name="action1" class="......">

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

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

     <param name="username">${username}</param>

     <param name="password">${password}</param>

   </result>

<action>

 

<action name="action2" class=".....">

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

</action>

 

其中action2.jsp 位于webroot 下。${username} ${password} 中的username  password 对应于action1 中的属性值,即由页面传过来的值,而param 中 name="username" name="password" 中的username  password 对应于action2中的属性名称,即给该名称的属性赋值。

在action2.jsp中获取传递过来的属性 就要用到ognl表达式

<s:property value="username">

<s:property value="password">

 

 

 

struts2中关于result的返回类型一般我们是转发到一个jsp页面或者是html页面等,但是struts2中的result的返回类型还有redirect,redirectAction,chain。对于这三种返回类型之间肯定是有区别的,下面我们来看看关于redirect redirectAction chain这三种struts2的返回类型之间的区别。

当使用type=“redirectAction” 或type=“redirect”提交到一个action并且需要传递一个参数时。这里是有区别的: 
使用type=“redirectAction”时,结果就只能写Action的配置名,不能带有后缀:“.action” 

 

<action name="Login" class="steven.actions.LoginAction">
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>
</action>

 

使用type=“redirect”时,结果应是action配置名+后缀名 

 

<action name="Login" class="steven.actions.LoginAction"> 
<result name="success" type="redirect">User.action?u_id=${loginBean.u_id}</result> 
</action>

 

1 redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。
2 redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失。
3 chain:action处理完后转发到一个action,请求参数全部丢失,action处理结果不会丢失。
使用type=“redirect”时,结果应是action配置名+后缀名 

 

Struts2中的redirect参数传递

在Action之间传递参数有如下方法:

(方法一):

Xml代码

  1. <result name="topic" type="redirect">findTopics.action?topicId=${topicId}</result>

(方法二):

Xml代码

  1. <result name="topic" type="redirect-action">
  2. <param name="actionName">findTopics</param>
  3. <param name="topicId">${topicId}</param>
  4. </result>

 

 

如果是多个参数的话,继续再加几个<param>就行了,对于(方法一)如果是多个参数的怎么办?

Xml代码

  1. <result name="topic" type="redirect">findTopics.action?topicId=${topicId}&amp ;elementId=${elementId}</result>

使用redirect重置链接需要后缀名,使用了redirect-action就不能使用了,就例如使用chain一样,只需要写action的配置名,如果加入后缀名.action,就会报出异常,action未配置正确。在这个配置文件里,多个参数的连接符使用了"&amp ;"(分号要挨着amp,此处由于转义无法正常书写故添加空格),这是由于XML的语法规范,应该使用"&amp ;"代替"&",原理和HTML中的转义相同。

 

chain 用于把相关的几个action连接起来,共同完成一个功能。

Java代码

  1. <action name="step1" class="test.Step1Action">
  2. <result name="success" type="chain">step2.action</result>
  3. </action>
  4. <action name="step2" class="test.Step2Action">
  5. <result name="success">finish.jsp</result>
  6. </action>

<action name="step1" class="test.Step1Action">

     <result name="success" type="chain">step2.action</result>

</action>

<action name="step2" class="test.Step2Action">

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

</action>

处于chain中的action属于同一个http请求,共享一个ActionContext。

 

Struts2中的redirectAction参数传递

struts2 action提交成功后一般会转到某一jsp。
但有时候需要跳到某一action,一般会用如下方法:

Xml代码 复制代码  收藏代码
  1. <result name="success" type="chain">actionName</result>  


或者

Xml代码 复制代码  收藏代码
  1. <result name="success" type="redirect">actionName.action</result>  


如果这个action后面要带参数,比如xxxAction?id=xxxx
也可以搞定,用下面的方法:

Xml代码 复制代码  收藏代码
  1. <action name="updateCampaign" class="campaignAction" method="updateCampaign">  
  2.     <result name="success" type="redirectAction">  
  3.         viewCampaignDetail?campaignId=${campaignId}  
  4.     </result>  
  5. </action>  


或者

Xml代码 复制代码  收藏代码
  1. <action name="updateCampaign" class="campaignAction" method="updateCampaign">  
  2.     <result name="success" type="redirectAction">  
  3.         <param name="actionName">viewCampaignDetail</param>  
  4.         <param name="campaignId">${campaignId}</param>  
  5.     </result>  
  6. </action>  


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值