先记录一下,网上相关的东西太少,希望能抛砖引玉 --------------------------- 公司开发了一个新项目,希望能快速生成代码,经过多次讨论选择了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中 页面片段:
@H_404_23@<divid="jj_edit">
@H_404_23@<divid="apply_msg"dojoType="TabContainer">
- <c:iftest="${判断条件}">//满足判断条件则显示
@H_404_23@<divid="lftb1"dojoType="ContentPane"label="ApplyForm"
- href="/ICardApp/includepage/editApplyForm.action?method=Add&from=list">
@H_404_23@</div>
- <scripttype="text/javascript">
@H_404_23@formCont.add("saveApplyForm","apply_msg");
- formPane.add("saveApplyForm","lftb1");
@H_404_23@</script>
- </c:if>
@H_404_23@<c:iftest="${判断条件}">//满足判断条件则显示
- <divid="lftb2"dojoType="ContentPane"label="ContactClien"
@H_404_23@href="/ICardApp/includepage/editContactClient.action?method=Add&from=list">
- </div>
@H_404_23@<scripttype="text/javascript">
- formCont.add("saveContactClient","apply_msg");
@H_404_23@formPane.add("saveContactClient","lftb2");
- </script>
@H_404_23@</c:if>
- </div>
js变量定义
@H_404_23@<scripttype="text/javascript"src="<c:urlvalue='/scripts/dojo.js'/>"></script>
- <scripttype="text/javascript">
@H_404_23@vardjConfig={isDebug:true};
- dojo.require("dojo.widget.TabContainer");
@H_404_23@dojo.require("dojo.widget.LinkPane");
- dojo.require("dojo.widget.ContentPane");
@H_404_23@dojo.require("dojo.collections.Dictionary");
-
@H_404_23@varformCont=newdojo.collections.Dictionary();//定义子form所在的TabContainer和ContentPane标签队列
- varformPane=newdojo.collections.Dictionary();
@H_404_23@varupdatedform=document.forms;
- </script>
重点来啦,提交脚本如下:
@H_404_23@<scripttype="text/javascript">
- functionmain_form_submit(){//总页面提交
@H_404_23@synfunc();
- }
@H_404_23@functionsynfunc(){//顺序提交各个页面
- for(vari=0;i<updatedform.length;i++){
@H_404_23@vartmpform=updatedform[i];
- if(tmpform.updated==true){
@H_404_23@varbindArgs={
- url:tmpform.action,
@H_404_23@mimetype:"text/plain",
- timeoutSeconds:5000,
@H_404_23@method:"POST",
- formNode:document.getElementById(tmpform.id),
@H_404_23@handle:function(type,data,evt){
- if(type=="load"){
@H_404_23@document.getElementById(formPane.entry(tmpform.id)).innerHTML=data;
- synfunc();
@H_404_23@}elseif(type=="error"){
- //tmpform.updated=false;
@H_404_23@alert("Anerroroccurred.");//here,"data"isourerrorobject
- }elseif(type=="timeout"){
@H_404_23@//tmpform.updated=false;
- alert("outoftime!");
@H_404_23@}
- }
@H_404_23@};
- dojo.io.bind(bindArgs);
@H_404_23@break;
- }//endifupdated==true
@H_404_23@}//endfor
- }
@H_404_23@</script>
其中,contactClientForm.jsp页面代码如下:
@H_404_23@<%@includefile="/common/taglibs.jsp"%>
@H_404_23@<ww:formname="contactClientForm"action="saveContactClient"method="post"validate="true">
- <ww:hiddenname="contactClient.contactClientId"value="%{contactClient.contactClientId}"/>
@H_404_23@
- <ww:textfieldlabel="%{getText('contactClient.contactType')}"name="contactClient.contactType"
@H_404_23@value="%{contactClient.contactType}"required="true"onchange="this.form.updated=true;"/>
@H_404_23@<ww:textfieldlabel="%{getText('contactClient.affirmType')}"name="contactClient.affirmType"
- value="%{contactClient.affirmType}"required="true"onchange="this.form.updated=true;"/>
@H_404_23@
- <ww:textfieldlabel="%{getText('contactClient.letter')}"name="contactClient.letter"
@H_404_23@value="%{contactClient.letter}"required="true"onchange="this.form.updated=true;"/>
@H_404_23@</ww:form>
欢迎拍砖。 |