Struts标签s:action无限循环错误详解

博主在写一个Web项目的时候需要自动执行action请求,所有用到了<s:action></s:action>这个标签。但是却出现无限提交action的情况。大概是这样


细心一点可以看到程序都在执行重复的操作,博主首先检查了数据库,发现没有问题,然后检查了DAO,BIZ等业务逻辑层,发现也没问题,最后将问题转向<s:action></s:action>这个标签上来,经检查确实是这个标签的属性值配置出错。首先看一下标签的属性值:

id:可选属性,作为该Action的引用ID    

name:必选属性,指定调用Action
   
namespace:可选属性,指定该标签调用Action所属namespace    
   
executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.    
   

ignoreContextParam:可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,

我开始是这样写的<s:actionname="xxx" executeResult="true"namespace="/xxx"> </s:action>

,name和namespace都没问题,所有我把注意力放在了executeResult这个属性上。果然发现错误,总结下来大概是这样:

index.jsp为首页。首页加载是要通过action获取数据,actionexcuterResult要设置成true,表示获取处理结果,作用相当与<resultname="success">/index.jsp</result>,但是当action执行完并且携带数据回到index.jsp时,也需要走<result>这一过程返回 index.jsp,程序不知道以action请求的result获取的值还是以executeResult获取的值为基准,所有无限重复执行action操作.

下面提供两个解决方案:
1.去掉executerResult这个属性或者将executerResult="true"改成executerResult="false"
2.在请求的xxAction类下将请求方法的返回类型修改为Void,不返回值

修改为void 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值