使用DOJO在java webwork项目中无刷新提交尝试-cfans -JavaEye技...

来源:百度文库 编辑:神马文学网 时间:2024/04/24 17:09:19
使用DOJO在java webwork项目中无刷新提交尝试
关键字:   appfuse ajax dojo 提交
先记录一下,网上相关的东西太少,希望能抛砖引玉
---------------------------
公司开发了一个新项目,希望能快速生成代码,经过多次讨论选择了Appfuse1.9.3-webwork分支?不明白其中的过程,但是既然选择了就要搞定不是?
Appfuse1.9.3-webwork,下面简称Appfuse。由hibernate+spring+webwork+sitemesh+ajax等一揽子当今牛X的开源项目组成,其中WW还集成使用了DOJO等东东。
---------------------------
经过测试,WW所用的DOJO版本V0.2和新的V0.3没有冲突,引入0.3版本,主要使用其封装的页面控件和无刷新提交。
下面的JSP页面是一个大的页面下面包括多个子form,每个子form要独立提交,各个子form不在同一个transaction中
页面片段:
代码



//满足判断条件则显示
href="/ICardApp/includepage/editApplyForm.action?method=Add&from=list">


formCont.add("saveApplyForm","apply_msg");
formPane.add("saveApplyForm","lftb1");


//满足判断条件则显示
href="/ICardApp/includepage/editContactClient.action?method=Add&from=list">


formCont.add("saveContactClient","apply_msg");
formPane.add("saveContactClient","lftb2");



js变量定义
代码


var djConfig = { isDebug: true };
dojo.require("dojo.widget.TabContainer");
dojo.require("dojo.widget.LinkPane");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.collections.Dictionary");
var formCont = new dojo.collections.Dictionary();//定义子form所在的TabContainer和ContentPane标签队列
var formPane = new dojo.collections.Dictionary();
var updatedform = document.forms;

 
重点来啦,提交脚本如下:
代码

function main_form_submit(){//总页面提交
synfunc();
}
function synfunc(){//顺序提交各个页面
for (var i=0; i< updatedform.length; i++){
var tmpform = updatedform[i];
if (tmpform.updated == true){
var bindArgs = {
url: tmpform.action,
mimetype: "text/plain",
timeoutSeconds: 5000,
method: "POST",
formNode: document.getElementById(tmpform.id),
handle: function(type, data, evt){
if(type == "load"){
document.getElementById(formPane.entry(tmpform.id)).innerHTML=data;
synfunc();
}else if(type == "error"){
//tmpform.updated = false;
alert("An error occurred."); //here, "data" is our error object
}else if(type == "timeout"){
//tmpform.updated = false;
alert("out of time!");
}
}
};
dojo.io.bind(bindArgs);
break;
} //end if updated == true
}//end for
}

其中,contactClientForm.jsp页面代码如下:
代码
<%@ include file="/common/taglibs.jsp"%>


value="%{contactClient.contactType}" required="true" onchange="this.form.updated=true;"/>
value="%{contactClient.affirmType}" required="true" onchange="this.form.updated=true;"/>
value="%{contactClient.letter}" required="true" onchange="this.form.updated=true;"/>

 
欢迎拍砖。
17:07  |  永久链接  |   浏览 (1447)  |  评论 (1)  |   收藏  |  项目日志  |  进入论坛  |
永久链接
http://cfans.javaeye.com/blog/25244
评论    共 1 条发表评论
zidoing     2006-09-29 11:48
我一般是使用prototype
代码