`

解决在页面删除记录后刷新造成的重复提交小技巧

阅读更多
在做基于SSH的web应用的时候通常会遇到这样一种情况:我们在页面上的数据列表中删除一条数据,然后刷新一次当前页面hibernate会报一个异常:找不到对象 这是因为在第一次点击删除链接的时候已经将那条数据删除了,此时你可以在页面上单击右键-->属性  查看一下当前的链接它会是刚才你删除数据时候的链接例如:http://localhost/xxxx/org!del.action?pid=7 所以在这个时候如果你刷新一下当前页面就会把上一步的操作再次的执行一次 因为刚才的那一条数据已经删除了所以当然会因为找不到对象而报错 对此有两种解决方案:
(1)我们在列表中删除一条数据的时候,显示效果一般是一条数据删除完成后还会跳转到当前页面:这种跳转是forward跳转地址栏不会发生变化。所以刷新页面仍然会再次的提交请求。所以我们可以把这种forward跳转改成redirect跳转,这样地址就发生变化不会出现错误了
public String del() {
		this.orgService.del(org.getId());
		return "del_success";
	}

<!--org.action默认执行execute()方法,传递参数pid是因为列表是一棵树有多级目录要做到在哪一级目录下面删除的还要跳转到哪一级目录下面才可以 -->
<result name="del_success">/org.action?pid=${pid}</result>

public String execute() {
		List<Organization> orgs = this.orgService.search(pid);
		ActionContext.getContext().put("orgs", orgs);
		return index;
	}


(2)因为删除操作是在当前页面进行的而且地址没有变,所以刷新会出问题,我们可以利用javascript在点击删除链接的时候打开一个模态的窗口,在这个窗口中删除,删除完成之后刷新一下列表页面就可以了,这样就阻止了用户的刷新页面操作。
<td align="center" vAlign="center"><a href="javascript:del('org!del.action?id=<s:property value="id"/>','确实删除记录?')">删除</a></td>

function openDeleteDialog(url,confirmString){
	var c = confirmString;
	if(c == null || c == ''){
		c = "你确认要删除记录吗?";
	}
	if(confirm(c)){
		return window.showModalDialog(url,"window123","dialogHeight:234px;dialogWidth:271px;resizable:no;help:yes;status:no;scroll:no");
	}
	return false;
}

/*
 * 删除记录
 */
function del(url,info){
	if(openDeleteDialog(url,info)){
		window.location.reload(true);
	}
}


2
1
分享到:
评论
1 楼 form_rr 2010-03-16  
总结得很好啊!
我觉得第一种方法有一定的局限性。
redirect 方法不能把值带出来。例如,request.getAttribute的值

第二种我比较赞同。
效果比较好。

相关推荐

    JSP实用技巧集合,jsp编程的一些小技巧总结

    jsp编程的一些小技巧总结,绝对实用。包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录...

    asp.net知识库

    SubmitOncePage:解决刷新页面造成的数据重复提交问题 SharpRewriter:javascript + xml技术利用#实现url重定向 采用XHTML和CSS设计可重用可换肤的WEB站点 asp.net的网址重定向方法的比较:面向搜索引擎友好 也谈 ...

    超实用的jQuery代码段

    2.22 防止单个页面重复提交按钮 2.23 取得列表控件选中的option对象 2.24 限制输入框仅接受特殊字符的输入 2.25 禁止页面内全部超链接 2.26 实现动态组合列表框 2.27 如何使用属性过滤器 2.28 如何测试某个元素是否...

    C#编程经验技巧宝典

    111 &lt;br&gt;0184 如何在ASP.NET中获取文件的扩展名 111 &lt;br&gt;0185 如何在ASP.NET中用URL在页面之间传值 112 &lt;br&gt;0186 如何使用IsPostBack实现ASP.NET页面加载 112 &lt;br&gt;0187 如何利用输出缓存技术缓存...

    PHP程序开发范例宝典III

    实例215 显示数据表中的重复记录和记录条数 335 8.8 排序、分组统计 336 实例216 对数据进行降序查询 336 实例217 对数据进行多条件排序 337 实例218 对统计结果进行排序 338 实例219 单列数据分组统计 ...

    《程序天下:JavaScript实例自学手册》光盘源码

    第1章 页面特效 1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错...

    程序天下:JavaScript实例自学手册

    第1章 页面特效 1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分单引号和双引号 68 实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分单引号和双引号 68 实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    linux与unix shell编程指南.rar

    linux/unix shell编程指南,全面介绍了Linu/unix shell编程的常用知识和技巧,是不可多得的编程宝典。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限...

    shell编程和unix命令

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    Linux shell编程指南

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    LINUX与UNIX SHELL编程指南 高清PDF

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...

    LINUX与UNIX SHELL编程指南

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    linux与unix shell编程指南

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...

Global site tag (gtag.js) - Google Analytics