日期:2014-05-16  浏览次数:20457 次

防止servlet重复提交 ---- JS解决方法
为了防止用户刷屏重复提交,有的时候会让人很头痛。
解决方法有:struts的令牌。。。还其他的么,不知道了。

而我现在忽然想起了一个方法就是通过JS也解决问题。。经过多方测试,自我感觉良好。


解决方案:

如果在某一个action中,需要作这个防刷功能,那么我会在用户提交时,
1、给页面加上<frame>标签
<iFrame id="slipFrame" name="slipFrame" src="about:blank" width="100%" height=0 marginwidth=″0″ marginheight=″0″ frameborder="0" scrolling="no" space="0" vspace="0"></iframe>

2、给FORM加上TARGET指向<frame>;
document.addCompositRule.action = "systemEditCompositRuleCondition.do?actions=update";
		document.addCompositRule.target = "slipFrame";
		document.addCompositRule.submit();
		event.srcElement.disabled = true;

3、提交。
4、提交后用JS调父窗体刷新
//成功或失败:回调方法
	function sucessCallback(){
			refreshRule();
	}



function doPost() {
	//System.out.println("errorMsg:"+"="+<c:out value="${errorMsg}"/>);
	alert("操作成功!");
	if( opener != null ) {
		opener.sucessCallback();
		window.close();
	} else if( parent != null ) {
		parent.sucessCallback();
	}
}