锁定老帖子 主题:IE浏览器重复提交的问题!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-25
我后台的anction执行了这个删除之后,再重定向到一个url: listAllArticles.action 给客户看结果! 然而,客户在看listAllArticles.action时,习惯性的点击了刷新,因为delArticle.action?articleId=100这个url还保留在IE地址栏中,结果,刷新就重复发送了这个delArticle.action,导致后台返回客户出错信息。然而,客户的本意是刷新查看listAllArticles.action! 对于这种重定向的问题,大家是怎么解决IE端的地址栏更新问题呢?? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-08-25
Core J2EE Patterns第二版,“J2EE重构”一章,“引入同步令牌”的重构手法,看完就明白了。
|
|
返回顶楼 | |
发表时间:2004-08-25
firebody 写道 比如客户点击一个URL: delArticle.action?aritcleId=100
我后台的anction执行了这个删除之后,再重定向到一个url: listAllArticles.action 给客户看结果! 然而,客户在看listAllArticles.action时,习惯性的点击了刷新,因为delArticle.action?articleId=100这个url还保留在IE地址栏中,结果,刷新就重复发送了这个delArticle.action,导致后台返回客户出错信息。然而,客户的本意是刷新查看listAllArticles.action! 对于这种重定向的问题,大家是怎么解决IE端的地址栏更新问题呢?? 删除以后转向一个显示删除成功的页面吧。 或者是包含meta refresh 标记的页面。 也就是最终目的要让浏览器转向,不能在服务器端转向。 |
|
返回顶楼 | |
发表时间:2004-08-25
谢谢
gigix ,tiyi 问这个简单问题该打!!不过我真的不懂怎么解决阿!呵呵,本来想少做一些页面,看来用tiyi的解决问题! gigix 说得同步令牌,可能实在需等待长时间的操作中客户多次点击的问题吧!这个我这里还没有遇上! |
|
返回顶楼 | |
发表时间:2004-08-26
tiyi 写道 删除以后转向一个显示删除成功的页面吧。
或者是包含meta refresh 标记的页面。 也就是最终目的要让浏览器转向,不能在服务器端转向。 可以在服务器转向的!而且这样做最直接! 如果你是在用Struts的话,在Action里这样写就可以了: return new ActionForward("newAction.do", true);; 其它框架一般也都会提供类似功能的接口。 服务器端转向有forward和redirect两种方式,前者是firebody目前的效果,后者就是他想要的效果 |
|
返回顶楼 | |
发表时间:2004-08-26
引用 删除以后转向一个显示删除成功的页面吧。 或者是包含meta refresh 标记的页面。 也就是最终目的要让浏览器转向,不能在服务器端转向 很多用户需求是要求删除成功以后直接返回原来的页面的,如果没有这个成功删除的页面,是不是就无法解决问题了? 另外,不清楚楼下说的在服务器转向是什么意思? |
|
返回顶楼 | |
发表时间:2004-08-26
downpour 写道 引用 删除以后转向一个显示删除成功的页面吧。 或者是包含meta refresh 标记的页面。 也就是最终目的要让浏览器转向,不能在服务器端转向 很多用户需求是要求删除成功以后直接返回原来的页面的,如果没有这个成功删除的页面,是不是就无法解决问题了? 另外,不清楚楼下说的在服务器转向是什么意思? servlet的转向方式有两种,一种是内部转向,即直接将请求发送到下一个servlet(action) 。还有一种是用response header location(sendRedirect)。前者是浏览器不知的情况,所以在楼主实例中,浏览器发送请求给delAction,delAction返回的却是listAction的输出(服务器内部转向)。如果用sendRedirect(重定向),那么浏览器是知道服务器发回的实际listAction地址,从而再次发送请求去获取listAction的输出。不知有没有说清除。知道HTTP协议就明白二者的不同了。用meta标签也是一种明确告知浏览器当前访问地址是什么的方式。总而言之,就是让浏览器明白,按下刷新的时候,浏览器向正确的地址发请求。 muziq已经说得很准确了,不好意思我又叽叽歪歪啦 ![]() |
|
返回顶楼 | |
发表时间:2004-08-29
前段时间和几个作c/s的程序员在一起的时候,他们要求的做法是页面显示的值在session中,对数据库操作收到结果后对应的操作session,这样子页面显示的数据可以得到控制,“用户在操作的时候就不会迷惘”,引用大我10岁的程序员的话
|
|
返回顶楼 | |
发表时间:2004-08-29
马伟 写道 这样子页面显示的数据可以得到控制,“用户在操作的时候就不会迷惘”
不是很明白, 能够详细说说吗? 谢了! |
|
返回顶楼 | |
发表时间:2004-08-29
看来你是用Webwork的,你可以这样做
<result name="success" type="redirect">article!input.action</result> <result name="input" type="dispatcher">article.jsp</result> 当然,前提是在一个相对比较靠根(ActionSupport)的位置实现 public String input(); { return "input"; } |
|
返回顶楼 | |