struts2 redirect-action 传递 参数

本文探讨了在Struts2框架中如何正确地使用redirect-action进行页面跳转,并传递参数,解决了因XML转义字符导致的配置错误及参数设置问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做一个系统,使用struts2框架,在提交一个请求后,将获取的数据对象再要生成一个序列号,为了防止刷新生成冗余序列号,就在请求处理完成后,直接重定向到显示该信息的action中:

 

Java代码 复制代码
  1. <action name="enterpreinfo" class="preinfoBusinessAction"    method="enterPreinfoSub">     
  2.   <result name="success" type="redirect-action">     
  3.      showpreinfo?preinfo.order_number=${preinfo.order_number}&amp;preinfo.company_name=${preinfo.company_name}      
  4.   </result>     
  5.  <result name="error" type="redirect">     
  6.     <param name="location">/error.jsp</param>     
  7.  </result>     
  8. </action>  
 

 

因为使用了redirect-action,所以要注意不能将showpreinf?preinfo.order_number=${preinfo.order_number}写成showpreinf.action?preinfo.order_number=${preinfo.order_number}

在这个配置文件里,多个参数的连接符使用了"&amp;",但XML的语法规范,应该使用"&amp;"代替"&",原理和HTML中的转义相同,开始没有注意,在struts分析配置文件时,总是报出这样的错误:

The reference to entity "preinfo" must end with the ';' delimiter.
<action name="editmenu" class="LunchClassPackage.MenuAction" method="UpdMenu">
    <result name="success" type="redirect-action">
        <param name="actionName">managemenu </param>
        <param name="companyId">${companyId} </param>
  </result>
</action>
官方文档:
Struts action代码 复制代码
  1. <package name="public" extends="struts-default">   
  2.     <action name="login" class="...">   
  3.         <!-- Redirect to another namespace -->   
  4.         <result type="redirect-action">   
  5.             <param name="actionName">dashboard</param>   
  6.             <param name="namespace">/secure</param>   
  7.         </result>   
  8.     </action>   
  9. </package>   
  10.   
  11. <package name="secure" extends="struts-default" namespace="/secure">   
  12.     <-- Redirect to an action in the same namespace -->   
  13.     <action name="dashboard" class="...">   
  14.         <result>dashboard.jsp</result>   
  15.         <result name="error" type="redirect-action">error</result>   
  16.     </action>   
  17.   
  18.     <action name="error" class="...">   
  19.         <result>error.jsp</result>   
  20.     </action>   
  21. </package>   
  22.   
  23. <package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters">   
  24.    <-- Pass parameters (reportType, width and height) -->   
  25.    <!--   
  26.    The redirect-action url generated will be :   
  27.    /genReport/generateReport.action?reportType=pie&width=100&height=100  
  28.    -->   
  29.    <action name="gatherReportInfo" class="...">   
  30.       <result name="showReportResult" type="redirect-action">   
  31.          <param name="actionName">generateReport</param>   
  32.          <param name="namespace">/genReport</param>   
  33.          <param name="reportType">pie</param>   
  34.          <param name="width">100</param>   
  35.          <param name="height">100</param>   
  36.       </result>   
  37.    </action>   
  38. </package>  
自己的代码:
Struts action代码 复制代码
  1. <!-- 删除文章 -->   
  2.         <action name="articleDel" class="articles.action.ArticleAction"  
  3.             method="delArticle">   
  4.             <result name="authorDelArticle" type="redirect-action">   
  5.                 articlesList?do=del   
  6.             </result>   
  7.             <result name="adminDelArticle">   
  8.                 /admin/articlesList.jsp   
  9.             </result>   
  10.         </action>    或用下面的代替  
<!-- 删除文章 -->
		<action name="articleDel" class="articles.action.ArticleAction"
			method="delArticle">
			<result name="authorDelArticle" type="redirect-action">
				articlesList?do=del
			</result>
			<result name="adminDelArticle">
				/admin/articlesList.jsp
			</result>
		</action>    或用下面的代替
Struts action代码 复制代码
  1. <result name="authorDelArticle" type="redirect">   
  2.     articlesList.action?do=del   
  3.  </result>  
<result name="authorDelArticle" type="redirect">
    articlesList.action?do=del
 </result>
想解决的问题是怎么用
<param name="do"></param>成功传值,一直失败中!
警告: Caught OgnlException while setting property 'reportType' on type 'org.apache. struts2.dispatcher.ServletActionRedirectResult'.
ognl.NoSuchPropertyException: org.apache. struts2.dispatcher.ServletActionRedirectResult.reportType
上述问题是说我 没有setting property 这个属性,我去实验下。。。
Struts代码 复制代码
  1. Under JSP 2.1 the # character is now used by the JSP EL.    
  2.   
  3. This may cause problems with some applications that use the OGNL # operator.    
  4.   
  5. One quick-fix is to disable the JSP EL in a JSP 2.1 container (like GlassFish) by adding a jsp-config element to the web.xml   
  6.   
  7. <jsp-config>   
  8.     <jsp-property-group>   
  9.       <url-pattern>*.jsp</url-pattern>   
  10.       <el-ignored>true</el-ignored>   
  11.     </jsp-property-group>   
  12.   </jsp-config>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值