关于JSP中2重送信防止的问题。

netty 2008-08-19 01:18:52
简单介绍
AAA.jsp中包括一个可以下载文件的按钮,一个检索的按钮,一个翻页的按钮。

AAA.jsp中包括了以下代码
<script type="text/javascript" src="../js/ZZZ/Common.js"></script>

而Common.js内容为以下。
--------------------------------------------------------------------------------------------
var onSubmitFlg = false;

if (window.addEventListener) { //for W3C DOM
window.addEventListener("load", initCommon, false);
} else if (window.attachEvent) { //for IE
window.attachEvent("onload", initCommon);
} else {
window.onload = initCommon;
}

function initCommon(){
// 全てテキストでEnterによるフォームの自動送信を禁止
var list = document.getElementsByTagName("input");
for (var i=0; i<list.length; i++) {
if(list[i].type == 'text'
|| list[i].type == 'password'
|| list[i].type == 'checkbox'
|| list[i].type == 'radio'
|| list[i].type == 'file'){
list[i].onkeypress = function (event) {
return submitStop(event);
};
}
}

// 二重送信の防止
document.forms[0].onsubmit = function (e) {
alert("111111!");
if (onSubmitFlg) {
alert("onsubmit is true!");
return false;
}
alert("onsubmit is false!");
onSubmitFlg = true;
return true;
}
}
其他代码ignore.
--------------------------------------------------------------------------------------------
请问initCommon函数何时执行?
是否在页面加载的时候执行。
而initCommon函数中的子函数document.forms[0].onsubmit()是否只在form被submit的时候才执行?
但是经过测试,有的按钮可以执行document.forms[0].onsubmit(),有的按钮却不不执行不到document.forms[0].onsubmit()函数,这是为什么呢?



执行不到document.forms[0].onsubmit()的按钮的写法如下
<html:button styleClass="ButtonMiddle" property="SearchButton" value="検索"
onclick="setsearchButton('ScButton')" /></td>
<script language="javascript" type="text/javascript">

function setsearchButton(param){
document.forms[0].action="../PCUI/DRPTK000.do?ScButton="+param;
document.forms[0].submit();
}
</script>
可以执行到document.forms[0].onsubmit()的按钮的写法如下
<logic:notEqual property="csvOutputButton"
name="ccTblledgerilist_st" value="" >
<td class=HorizontalTableColumnCenter><input type="image"
alt="CSV出力ボタン" name="csvOutputButtonIndex"
src="<%=request.getContextPath()%>/images/CsvIcon.gif"
onclick="setCsvOutputButton('<bean:write name="ccTblledgerilist_st" property="csvOutputButton" />','csvOutputButton')">
<html:hidden name="ccTblledgerilist_st" property="csvOutputButton"
indexed="true" />

</logic:notEqual>
<script language="javascript" type="text/javascript">

function setCsvOutputButton(param,Str){
document.forms[0].csvOutputButton.value=param;
document.forms[0].action = "../PCUI/DRPTK000.do?csvOutputButtonIndex.x="+Str;
document.forms[0].submit();
}

</script>

还有一个诡异的问题,按CSV出力ボタン弹出对话框,下载完文件之后(不下载,点击取消也一样),JSP页面没有被重新加载,这样就导致onSubmitFlg的值一直为true,按翻页按钮都不再执行动作了。请问有什么好方法解决此问题吗?
说得不是很清楚,将就看吧。
...全文
206 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

81,122

社区成员

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

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