posts - 23, comments - 0, trackbacks - 0, articles - 3
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          作者: beauty9235  鏈接:http://beauty9235.javaeye.com/blog/229632  發(fā)表時(shí)間: 2008年07月04日

          聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!

          dwr動(dòng)態(tài)載入小結(jié)

          筆記在實(shí)際開發(fā)中用到dwr框架,一直以來,常為加載中提示用戶等待這問題困擾,經(jīng)筆者研究,摸索出一個(gè)切實(shí)可行的方案,供大家參考。 實(shí)例如下: <a style="cursor:hand"  onclick="changeStatus(this);Test.invoke('${parameters}','${pageId}',callBack);"><img src='/icon.gif'></a> 函數(shù)說明: changeStatus我們將用來改變提示狀態(tài)值 Test類的invoke函數(shù)將觸發(fā)從臺(tái)數(shù)據(jù)庫(kù)取出值 然后通過回調(diào)函數(shù)callBack負(fù)責(zé)在頁(yè)面顯示出來

          頁(yè)面配置

          <script type='text/javascript' src='/dwr/interface/Test.js'></script>
          
          <script type='text/javascript' src='/dwr/engine.js'></script>
          
          <script type='text/javascript' src='/dwr/util.js'></script>
          
          <script type='text/javascript' src="/js/prototype-1.4.0.js"></script>

           

          dwr.xml

          <!DOCTYPE dwr PUBLIC
          
                  "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
          
                  "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
          
          <dwr>
          
              <allow>
          
          	   <create creator="new" javascript="Test">
          
                      <param name="class" value="pakage.Test"/>
          
                  </create>
          
                  <convert converter="bean" match="pakage.Test"/>
          
              </allow>
          
          </dwr>
          回調(diào)函數(shù)
          var callBack=function(data){
          
                  var pageId=data.pageId;
          
                  var list=data.listEntityBean;
          
                  if ($(pageId).style.display == "none") {
          
                      $(pageId).style.display="block";
          
                      var htmlStr = "";
          
                      for (var i = 0; i < list.length; i++) { 
          
                          htmlStr +=...//這里是將list中的值取出來給一個(gè)字符串
          
                      }
          
                      $(pageId).innerHTML = htmlStr;
          
                      return;
          
                  }
          
                  $(pageId).style.display="none";
          
              }
          pakage.Test類
          public class Test  {
          
              private String pageId;
          
          	private List list;
          
              public String getPageId() {
          
                  return pageId;
          
              }
          
          
          
              public void setPageId(String pageId) {
          
                  this.pageId = pageId;
          
              }
          
          	public String getList() {
          
                  return list;
          
              }
          
          
          
              public void setList(List list) {
          
                  this.list = list;
          
              }
          
             static Log log= LogFactory.getLog(Test.class);	
          
             public void invoke(String parameter,String pageId){
          
                this.setPageId(pageId);
          
          	  this.list=...//這里根據(jù)參數(shù)從數(shù)據(jù)庫(kù)里取出值來
          
          	  return this;
          
             }
          至些我們完成的dwr的編寫。
          function changeStatus(obj){
          
              var htmlStr = "";
          
              var oPopup = window.createPopup();
          
              DWREngine.setPreHook(function() {     //這是正在加載的代碼
          
                  htmlStr = "<img src=\"/loading.gif\">";
          
                  obj.innerHTML = htmlStr;//這里是改變傳入對(duì)象的值,是dwr正在加載時(shí)的提示,如loading,我這里是用的是圖片
          
                  var oPopupBody = oPopup.document.body;
          
                  oPopupBody.innerHTML = "<img src='/admin/images/spinner.gif'>";
          
                  oPopup.show((Math.abs(Math.round((document.body.clientWidth-50) / 2))), Math.abs(Math.round((document.body.clientHeight-50)/ 2)), 100, 100, document.body);
          
              });
          
              DWREngine.setPostHook(function() {    //這是加載完成的代碼
          
                  htmlStr = "<img src=\"/loadok.gif\">";//這里是改變傳入對(duì)象的值,是dwr加載時(shí)完成的提示,如load ok,我這里是用的是圖片
          
                  obj.innerHTML = htmlStr;
          
                  oPopup.hide();
          
              });
          
          }   
          
          
          以上代碼,是我在項(xiàng)目中抽取出來的一部份。
          小說明一下:
          var oPopup = window.createPopup();這個(gè)函數(shù)用于創(chuàng)建浮動(dòng)頁(yè)面的loading載入提示,加載完成后將對(duì)象進(jìn)行oPopup隱藏處理oPopup.hide();
          如果不須要,changeStatus這個(gè)函數(shù)完全可以這樣寫
          function changeStatus(obj){
          
              DWREngine.setPreHook(function() {     //這是正在加載的代碼
          
                  obj.innerHTML = "<img src=\"/loading.gif\">";//這里是改變傳入對(duì)象的值,是dwr正在加載時(shí)的提示,如loading,我這里是用的是圖片
          
              });
          
              DWREngine.setPostHook(function() {    //這是加載完成的代碼
          
                  obj.innerHTML = "<img src=\"/loadok.gif\">";//這里是改變傳入對(duì)象的值,是dwr加載時(shí)完成的提示,如load ok,我這里是用的是圖片
          
              });
          
          } 
          至此我們完美的完成了dwr加載時(shí)的提示問題,這樣也使用戶體更強(qiáng),更具人性化.

          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 唐河县| 沙雅县| 关岭| 团风县| 原阳县| 咸丰县| 红原县| 穆棱市| 密山市| 凤冈县| 玉屏| 冀州市| 景泰县| 甘德县| 台南市| 周至县| 舞阳县| 古田县| 南宫市| 潞城市| 合阳县| 南靖县| 滦平县| 丹江口市| 湖北省| 新安县| 清苑县| 高唐县| 贵德县| 双鸭山市| 彩票| 宝应县| 新兴县| 广平县| 平湖市| 句容市| 金门县| 宁波市| 闽侯县| 泰来县| 阿拉善右旗|