精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-28
1。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理完毕返回到一个新的列表页面。此时刷新页面,则服务器当作重复提交对待。
可采用重定向方式 2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。 把修改token的状态信息的代码放在保存完信息之后。如果在保存信息之前发生错误,token的信息是不会被清除的。 3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。 和第二个问题一样。 |
|
返回顶楼 | |
发表时间:2007-11-28
或者当点了提交按钮后 使按钮不可用 或者可以在页面加个验证码 如果验证不通过就不跳转么
|
|
返回顶楼 | |
发表时间:2007-11-30
对于这个问题,我觉得在struts1.2时代,处理方法就有了。
但到了struts2.0,则用的是webwork的机制,而且更加成熟 问题1,就不用说了,在struts1.2中,new ActionForward(各参数); 可以指定参数:boolean redirect 问题2,应该加一个异常处理的方法,当发生异常时,重置token的值,即使返回到编辑页面,取得的token值还是原来的,并不会重新生成,所以再次提交,也还是原来的token。这个在webwork中就很方便:加一个异常Interceptor,处理极其方便 问题3,人家手快,没办法,只能把按钮diabled掉 |
|
返回顶楼 | |
发表时间:2007-12-02
不行你就用ajax,象这个论坛一样,页面局部刷新
|
|
返回顶楼 | |
发表时间:2007-12-03
提交后把按键去掉
|
|
返回顶楼 | |
发表时间:2007-12-21
问题3的解决方法挺巧妙的,呵呵。
|
|
返回顶楼 | |
发表时间:2007-12-22
比较优雅的是redirect-after-post技术。
Webwork或者Struts2对redirect-after-post都有支持, FlashResult和FlashIntecepter搭配使用。 Stripes里面也有个Flash类型的result。 |
|
返回顶楼 | |
发表时间:2008-01-20
81261686 写道 提交后把按键去掉
这不太好。 其实讨论来讨论去,大家可能忘了最早的目的了:"防止用户在短时间内提交相同的内容", 这不就完了,很明显,这是一个业务需求,解决业务需求的方法只能是写到业务逻辑中去:如 if ( (post.time-lastpost.time)<1S) && (post.content.length()=lastpost.content.length() && post.content.hashcode()=lastpost.content.hashcode() ) throw BuzisException("重复了") |
|
返回顶楼 | |
发表时间:2008-02-19
通过js控制,提交后将提交按钮所在的table块 通过
document.forms[0].submitType.value = v; var v = document.getElementById(t); v.innerHTML = "数据提交中..."; 这种方式替换掉就ok了 |
|
返回顶楼 | |
发表时间:2008-03-25
forward设置redirect=true是最简单的设置了也是最容易想到的啊
|
|
返回顶楼 | |