前端之家收集整理的这篇文章主要介绍了
使用DOJO在java webwork项目中无刷新提交尝试,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
先记录一下,网上相关的东西太少,希望能抛砖引玉 --------------------------- 公司开发了一个新项目,希望能快速生成代码,经过多次讨论选择了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中 页面片段:
- <divid="jj_edit">
- <divid="apply_msg"dojoType="TabContainer">
- <c:iftest="${判断条件}">//满足判断条件则显示
- <divid="lftb1"dojoType="ContentPane"label="ApplyForm"
- href="/ICardApp/includepage/editApplyForm.action?method=Add&from=list">
- </div>
- <scripttype="text/javascript">
- formCont.add("saveApplyForm","apply_msg");
- formPane.add("saveApplyForm","lftb1");
- </script>
- </c:if>
- <c:iftest="${判断条件}">//满足判断条件则显示
- <divid="lftb2"dojoType="ContentPane"label="ContactClien"
- href="/ICardApp/includepage/editContactClient.action?method=Add&from=list">
- </div>
- <scripttype="text/javascript">
- formCont.add("saveContactClient","apply_msg");
- formPane.add("saveContactClient","lftb2");
- </script>
- </c:if>
- </div>
js变量定义
- <scripttype="text/javascript"src="<c:urlvalue='/scripts/dojo.js'/>"></script>
- <scripttype="text/javascript">
- vardjConfig={isDebug:true};
- dojo.require("dojo.widget.TabContainer");
- dojo.require("dojo.widget.LinkPane");
- dojo.require("dojo.widget.ContentPane");
- dojo.require("dojo.collections.Dictionary");
-
- varformCont=newdojo.collections.Dictionary();//定义子form所在的TabContainer和ContentPane标签队列
- varformPane=newdojo.collections.Dictionary();
- varupdatedform=document.forms;
- </script>
重点来啦,提交脚本如下:
- <scripttype="text/javascript">
- functionmain_form_submit(){//总页面提交
- synfunc();
- }
- functionsynfunc(){//顺序提交各个页面
- for(vari=0;i<updatedform.length;i++){
- vartmpform=updatedform[i];
- if(tmpform.updated==true){
- varbindArgs={
- 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();
- }elseif(type=="error"){
- //tmpform.updated=false;
- alert("Anerroroccurred.");//here,"data"isourerrorobject
- }elseif(type=="timeout"){
- //tmpform.updated=false;
- alert("outoftime!");
- }
- }
- };
- dojo.io.bind(bindArgs);
- break;
- }//endifupdated==true
- }//endfor
- }
- </script>
其中,contactClientForm.jsp页面代码如下:
- <%@includefile="/common/taglibs.jsp"%>
- <ww:formname="contactClientForm"action="saveContactClient"method="post"validate="true">
- <ww:hiddenname="contactClient.contactClientId"value="%{contactClient.contactClientId}"/>
- <ww:textfieldlabel="%{getText('contactClient.contactType')}"name="contactClient.contactType"
- value="%{contactClient.contactType}"required="true"onchange="this.form.updated=true;"/>
- <ww:textfieldlabel="%{getText('contactClient.affirmType')}"name="contactClient.affirmType"
- value="%{contactClient.affirmType}"required="true"onchange="this.form.updated=true;"/>
- <ww:textfieldlabel="%{getText('contactClient.letter')}"name="contactClient.letter"
- value="%{contactClient.letter}"required="true"onchange="this.form.updated=true;"/>
- </ww:form>
欢迎拍砖。 |
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。 原文链接:https://www.f2er.com/dojo/291984.html