Struts2中action的方法被执行两次

liuzf1986 2011-07-06 02:53:43
如题,请求了一次,日志却出现了2次,而且是2次相同的...
...全文
919 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengyonghai 2013-10-15
  • 打赏
  • 举报
回复
谢谢了,终于解决了,我的Action中的方法以 get 开头了,原来是 getMemberMobileForGrid 修改成 gainMemberMobileForGrid就好了。 费了很大的劲,还是这个帖子解决了为问题。 Action中的方法被调用了两次的问题解决。
kunsyliu 2013-01-17
  • 打赏
  • 举报
回复
引用 15 楼 huozhicheng 的回复:
是struts2吗,你看看你的Action方法是不是开头有get?不要用get
楼上的正解,我却是是由于action方法以get开头照成的,引以为戒!!!!
syc1110 2012-07-25
  • 打赏
  • 举报
回复
影起这种重复执行的并不是前台页面有重复提交表单, 而是由客户端下载方式影起的。 那种多线程下载方式就会重复的执行 response.setContentType("application/octet-stream;charset=GB2312");
ServletOutputStream out = response.getOutputStream();;
out.write(contentByte);
out.close();
这段代码所在的方法。 所以解决这种问题是将业务逻辑代码和这个弹出框下载的代码分成两个方法。 前台页面能过JS来分别提交表单以便先后执行这两个方法。 如果有情况必须先执行业务逻辑再执行下载, JS里提交表单最好做个延时(即延后一点时间执行下载的方法。)。
//延迟600毫秒提交下载的ACTION,为了解决先执行完上面的ACTION,再执行下载的ACTION
setTimeout(function(){
//下面的submit 是用来弹出下载文件的按钮
var submitform = document.getElementById("printSearchForm");


submitform.action = "activeCardManageAction!popupDownLoadDialog.action";
submitform.submit();
}
,600);
liuguoli1987226 2011-07-26
  • 打赏
  • 举报
回复
我考,你找出问题了那就把问题说说啊 。。。。
liuzf1986 2011-07-06
  • 打赏
  • 举报
回复
谢谢各位,问题找出来了
liuzf1986 2011-07-06
  • 打赏
  • 举报
回复
是struts2,开始Action方法有get,后来调试了下get方法会在action初始化的时候调用,所以会有两次,但是我已经改了,还是调用了2次
cat77771986 2011-07-06
  • 打赏
  • 举报
回复
我也遇到过这个问题,我记得好像是当时用的<a >标签调用js保存的,你可以调用一下js 在js里设置一个拦截,看看,应该是调用两次,检查一下代码
hepeng_8 2011-07-06
  • 打赏
  • 举报
回复
细心点 肯定是调用了两次
Horrison 2011-07-06
  • 打赏
  • 举报
回复
是struts2吗,你看看你的Action方法是不是开头有get?不要用get
newcaojun 2011-07-06
  • 打赏
  • 举报
回复
你提出的问题有两种可能
1.你点提交按钮的时候太快了导致提交出现两次重复的!解决办法是(1)提交按钮 至灰(2)请求路径加上加上标志
2.程序中 出现两次调用这个action

请仔细检查程序!
liuzf1986 2011-07-06
  • 打赏
  • 举报
回复
调试action方法执行完,又重新执行了
ipromise_u 2011-07-06
  • 打赏
  • 举报
回复
那就断点调试看看吧
liuzf1986 2011-07-06
  • 打赏
  • 举报
回复
直接的请求路径,没有通过表单提交方式
liuzf1986 2011-07-06
  • 打赏
  • 举报
回复
没有result ,是void方法
response.setContentType("application/octet-stream;charset=GB2312");
ServletOutputStream out = response.getOutputStream();;
out.write(contentByte);
out.close();
是这样返回,一个字节流
lyhmy 2011-07-06
  • 打赏
  • 举报
回复
是用submit按钮提交的,然后窗体用调用了一次action吗?这样可能会有2次啊
kui5656 2011-07-06
  • 打赏
  • 举报
回复
那应该没问题了啊?不明白!
ipromise_u 2011-07-06
  • 打赏
  • 举报
回复
可以看看你的Result
liuzf1986 2011-07-06
  • 打赏
  • 举报
回复
就是直接通过路径请求的,没有页面
kui5656 2011-07-06
  • 打赏
  • 举报
回复
你是页面点击一个按钮提交时调用吗?
liuzf1986 2011-07-06
  • 打赏
  • 举报
回复
是这样一个请求路径xxxx!xxx.action,
加载更多回复(3)

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧