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获取数据,action的excuterResult要设置成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