struts2页面刷新重复提交

wymaweiyue 2010-03-12 01:47:29
采用struts2框架。
1、查询页面中点击“下一页”,到下一页后再点右键刷新页面,这是页面自动跳转到第3页去了;继续刷新,继续往下一页跳,即使下一页没有数据(正常没有数据的页是不会出来的)。
2、查询页面点击“前一页”,跳到前一页后再点击右键刷新,页面自动跳到前一页,继续刷新,继续往前一页条,甚至页数都出现负数了。

debug一下,发现没刷新一次,前一次的操作就再往Action提交一次,导致页数增加。后来找资料,用了<s:token/>标签,包括XML配置,但是查询到结果后翻页功能不行了,翻页直接不提交了。很无奈。各位大侠看看怎么解决比较好?
...全文
1510 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yljf1314 2010-05-13
  • 打赏
  • 举报
回复
LZ,最后问题是如何解决的呢?
wymaweiyue 2010-03-19
  • 打赏
  • 举报
回复
非常感谢上面网友的热心建议。下一项目中会认真考虑各位的建议,修正那个问题。

结贴。
z4201812 2010-03-14
  • 打赏
  • 举报
回复
http://hi.baidu.com/lijieb/blog/item/7f1a8009af50ca89d1581bb8.html

可以去看看
YOYOOOP 2010-03-14
  • 打赏
  • 举报
回复
你的上一页下一页功能是用form来提交的吧?
我相信大家都知道。只有在使用form提交的时候按F5是会重复提交的
那么,找到这个问题是不是很容易改正这个问题了呢?

我想LZ也看到过很多网站的分页功能都是采用url传参。
只要是url传参,就不会出现你上面的那个现象
但是重复刷新是肯定会再次提交的

也就是说,用URL传参的话,还是会重复提交,只是这样不会出现你所描述的问题.
zllzlw520 2010-03-14
  • 打赏
  • 举报
回复
我不会啊,来学习下
qingyuan18 2010-03-14
  • 打赏
  • 举报
回复
刷新页面会自动提交到action?看看你的<form>的action设置是否有问题?可以先<form action="#">,在你的翻页的事件处理中再form.action="XXX.action";form.submit();

另外检查一下你的浏览器是否默认了回车换行及刷新触发form提交?
wymaweiyue 2010-03-14
  • 打赏
  • 举报
回复
先谢过上面几位的热心回答。明天上班了再好好看看。
sunscok 2010-03-14
  • 打赏
  • 举报
回复
用重定向,避免表单重复递交。
qiuyufeifei 2010-03-12
  • 打赏
  • 举报
回复
配置拦截器的时候注意
还要加上 defaultStack 默认拦截器栈
qiuyufeifei 2010-03-12
  • 打赏
  • 举报
回复
至于你使用了token标签 出错
有以下的原因:
1.没有为action配置TokenInterceptor或者TokenSessionStoreInterceptor拦截器;
2.你没有配置<result name=“invalid.token”>******</result>


如果表单页面没有使用token的话,千万不要配置TokenInterceptor或者TokenSessionStoreInterceptor拦截器,如果配了,会导致无法提交表单

另:
使用了token只是相当于在表单中加入了一个name=struts.token的表单域
他的值等于Session中struts.token的值一致才能提交
当不一致时拦截器会返回“invalid.token”
qiuyufeifei 2010-03-12
  • 打赏
  • 举报
回复
你是怎么判断 到“下一页”的!
你又不贴代码

只能猜了
regist是你请求的Action
http://*****/regist
(你在action中,或者拦截器中判断session中的某个值(假如是 pageno)是0,并更新为1,
然后你return “page1”;)
跳到了regist1.jsp

问题就是 你这个时候刷新 但是 地址栏还是http://*****/regist
然后又重复上面的过程 跳到了regist2.jsp

如果是这样的话,就在于你判断pageno的值的时机,以及什么时候+1

你仔细看看你的代码!
wymaweiyue 2010-03-12
  • 打赏
  • 举报
回复
自己顶顶。期待中......
wymaweiyue 2010-03-12
  • 打赏
  • 举报
回复
如xiechunmei13所说,我是使用了<s:token/>标签,包括struts.xml的配置。但这样做的结果是查询到结果后点击“下一页”出错了。似乎是没有提交到Action,被拦截了。
xiechunmei13 2010-03-12
  • 打赏
  • 举报
回复
struts2 有一个token的标签可以避免重复提交
youlaiyouwang 2010-03-12
  • 打赏
  • 举报
回复
我和你的架构一样,我的下一页是用js提交的,没有这种情况,你试下用js提交。
wymaweiyue 2010-03-12
  • 打赏
  • 举报
回复
下一个项目可以考虑使用ajax,但是这个项目都要结束了,再整体修改翻页功能不可能了。
hz890 2010-03-12
  • 打赏
  • 举报
回复
利用Ajax...
wymaweiyue 2010-03-12
  • 打赏
  • 举报
回复

由于项目马上就要结束了,测试都已经快结束了,整体修改翻页这个确实挺困难的。

是否还有其他的解决办法?
wymaweiyue 2010-03-12
  • 打赏
  • 举报
回复
能否具体说说是什么问题?
xiaoguan_Java 2010-03-12
  • 打赏
  • 举报
回复
分页写得有问题,重新写一个吧
加载更多回复(2)

81,092

社区成员

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

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