使用DOJO在java webwork项目中无刷新提交尝试

前端之家收集整理的这篇文章主要介绍了使用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中
页面片段:

    @H_404_23@<divid="jj_edit">
  1. <!--rightbegin-->
  2. @H_404_23@<divid="apply_msg"dojoType="TabContainer">
  3. <c:iftest="${判断条件}">//满足判断条件则显示
  4. @H_404_23@<divid="lftb1"dojoType="ContentPane"label="ApplyForm"
  5. href="/ICardApp/includepage/editApplyForm.action?method=Add&from=list">
  6. @H_404_23@</div>
  7. <scripttype="text/javascript">
  8. @H_404_23@formCont.add("saveApplyForm","apply_msg");
  9. formPane.add("saveApplyForm","lftb1");
  10. @H_404_23@</script>
  11. </c:if>
  12. @H_404_23@<c:iftest="${判断条件}">//满足判断条件则显示
  13. <divid="lftb2"dojoType="ContentPane"label="ContactClien"
  14. @H_404_23@href="/ICardApp/includepage/editContactClient.action?method=Add&from=list">
  15. </div>
  16. @H_404_23@<scripttype="text/javascript">
  17. formCont.add("saveContactClient","apply_msg");
  18. @H_404_23@formPane.add("saveContactClient","lftb2");
  19. </script>
  20. @H_404_23@</c:if>
  21. </div>

js变量定义
    @H_404_23@<scripttype="text/javascript"src="<c:urlvalue='/scripts/dojo.js'/>"></script>
  1. <scripttype="text/javascript">
  2. @H_404_23@vardjConfig={isDebug:true};
  3. dojo.require("dojo.widget.TabContainer");
  4. @H_404_23@dojo.require("dojo.widget.LinkPane");
  5. dojo.require("dojo.widget.ContentPane");
  6. @H_404_23@dojo.require("dojo.collections.Dictionary");
  7. @H_404_23@varformCont=newdojo.collections.Dictionary();//定义子form所在的TabContainer和ContentPane标签队列
  8. varformPane=newdojo.collections.Dictionary();
  9. @H_404_23@varupdatedform=document.forms;
  10. </script>

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

    @H_404_23@<scripttype="text/javascript">
  1. functionmain_form_submit(){//总页面提交
  2. @H_404_23@synfunc();
  3. }
  4. @H_404_23@functionsynfunc(){//顺序提交各个页面
  5. for(vari=0;i<updatedform.length;i++){
  6. @H_404_23@vartmpform=updatedform[i];
  7. if(tmpform.updated==true){
  8. @H_404_23@varbindArgs={
  9. url:tmpform.action,
  10. @H_404_23@mimetype:"text/plain",
  11. timeoutSeconds:5000,
  12. @H_404_23@method:"POST",
  13. formNode:document.getElementById(tmpform.id),
  14. @H_404_23@handle:function(type,data,evt){
  15. if(type=="load"){
  16. @H_404_23@document.getElementById(formPane.entry(tmpform.id)).innerHTML=data;
  17. synfunc();
  18. @H_404_23@}elseif(type=="error"){
  19. //tmpform.updated=false;
  20. @H_404_23@alert("Anerroroccurred.");//here,"data"isourerrorobject
  21. }elseif(type=="timeout"){
  22. @H_404_23@//tmpform.updated=false;
  23. alert("outoftime!");
  24. @H_404_23@}
  25. }
  26. @H_404_23@};
  27. dojo.io.bind(bindArgs);
  28. @H_404_23@break;
  29. }//endifupdated==true
  30. @H_404_23@}//endfor
  31. }
  32. @H_404_23@</script>

其中,contactClientForm.jsp页面代码如下:
    @H_404_23@<%@includefile="/common/taglibs.jsp"%>
  1. @H_404_23@<ww:formname="contactClientForm"action="saveContactClient"method="post"validate="true">
  2. <ww:hiddenname="contactClient.contactClientId"value="%{contactClient.contactClientId}"/>
  3. @H_404_23@
  4. <ww:textfieldlabel="%{getText('contactClient.contactType')}"name="contactClient.contactType"
  5. @H_404_23@value="%{contactClient.contactType}"required="true"onchange="this.form.updated=true;"/>
  6. @H_404_23@<ww:textfieldlabel="%{getText('contactClient.affirmType')}"name="contactClient.affirmType"
  7. value="%{contactClient.affirmType}"required="true"onchange="this.form.updated=true;"/>
  8. @H_404_23@
  9. <ww:textfieldlabel="%{getText('contactClient.letter')}"name="contactClient.letter"
  10. @H_404_23@value="%{contactClient.letter}"required="true"onchange="this.form.updated=true;"/>
  11. @H_404_23@</ww:form>

欢迎拍砖。


声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。

猜你在找的Dojo相关文章