国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
DWR學習筆記(五)

DWR學習筆記(五)

js 2010-01-02 19:24:42 閱讀1 評論0   字號: 訂閱

六.DWR中的JavaScript簡介:回調(diào)函數(shù)的聲明方式、查找回調(diào)函數(shù)的原則、創(chuàng)建與java對象匹配的js對象
 
  1.簡單說明:DWR根據(jù)dwr.xml生成和Java代碼類似的Javascript代碼。
     DWR通過引入回調(diào)函數(shù)來解決這個問題,當請求結(jié)果被返回后,DWR會調(diào)用這個回調(diào)函數(shù)。
 
  2.回調(diào)函數(shù)的聲明方式:有兩種,一是可以把回調(diào)函數(shù)放在參數(shù)列表里;一是可以把回調(diào)函數(shù)放到元數(shù)據(jù)對象里。
  
   (1)參數(shù)列表的回調(diào)函數(shù)(前邊一直用的方式)
     
     例子:
       A.生成一個java對象
        public class Remote{
         public String getData(int index){
          .........
         }
        }
        
       B.通過DWR調(diào)用
       <script type="text/javascript">
        //handleGetData就是回調(diào)函數(shù)的方法名
        Remote.getData(42, handleGetData);
        //聲明回調(diào)函數(shù)
        function handleGetData(data){
         alert(data);
        }
       </script>
       
       C.也可以將B中的回調(diào)函數(shù)寫成縮寫
       <script type="text/javascript">
        //handleGetData就是回調(diào)函數(shù)的方法名
        Remote.getData(
         42, 
         //匿名回調(diào)函數(shù)
         function(data){
          alert(data);
         }
        );
       </script>
   
   (2)元數(shù)據(jù)對象中的回調(diào)函數(shù)(推薦使用):這種方式較為規(guī)范
     
     例子:任然使用上面的java類Remote類。只是將DWR的js調(diào)用做一下更改
       
       Remote.getData(
        42,
        //定義元數(shù)據(jù)對象,其中字符串callback是匿名對象的屬性,
        //而function(data){alert(data);}是callback的屬性值。
        {
         callback:function(data){
            alert(data);
           }
        }
        //這里將匿名對象作為了最后一個參數(shù)值,匿名對象中存有回調(diào)函數(shù),
        //這樣DWR就可以通過找到callback,得到它的值,并作為回調(diào)函數(shù)。
       );
       
       **說明:通過這種調(diào)用元數(shù)據(jù)對象中的回調(diào)函數(shù)的好處就是可以指定額外的調(diào)用選項。
       
     例子:
       Remote.getData(
        42,
        //元數(shù)據(jù)對象,內(nèi)部有多個屬性及對應的屬性值
        {
         //回調(diào)函數(shù),注意函數(shù)仍然是匿名函數(shù)
         callback:function(data){alert(data);},
         //在回調(diào)函數(shù)的元數(shù)據(jù)對象中可以指定超時和錯誤的處理方式
         timeout:5000,
         errorHandler:function(message){alert("Oops: " + message);}
        }
       );
       
    
  3.查找回調(diào)函數(shù)的原則:我們通過js調(diào)用java對象的方法時指定了回調(diào)函數(shù),
         那么DWR是怎樣識別回調(diào)函數(shù)的呢?為什么它能準確的調(diào)用到回調(diào)函數(shù)。
         那是因為DWR通過js調(diào)用java對象的方法是傳入的回調(diào)函數(shù)的位置是有規(guī)定的
         (如:一般最后一個參數(shù)用于指定回調(diào)函數(shù))
         
      A.如果第一個(針對java對象方法不接收參數(shù)的情況)或最后一個參數(shù)是一個函數(shù),那么它就是回調(diào)函數(shù),其他參數(shù)都是Java的方法參數(shù)。
      
      B.如果最后一個參數(shù)是一個對象,這個對象中有一個"callback"屬性(經(jīng)過驗證必須用callback字符串作為屬性名,否則不起作用),
        并且它是個函數(shù),那么這個對象就是元數(shù)據(jù)對象,它將作為回調(diào)函數(shù)的擁有者,其他參數(shù)都是Java方法參數(shù)。
      
      C.如果第一個參數(shù)是null ,我們就假設(shè)沒有回調(diào)函數(shù),其他的都是Java方法參數(shù)。
        盡管如此,我們會檢查最后一個參數(shù)是不是null,如果是就發(fā)出警告。不是那就正常!
      
      D.如果最后一個參數(shù)是null,那么就沒有callback函數(shù)。
      
  4.創(chuàng)建與java對象匹配的js對象:就是通過創(chuàng)建js對象,
           然后通過js調(diào)用java對象方法的時候為方法傳遞參數(shù)(主要指Bean對象參數(shù))
           
      A.產(chǎn)生javaBean對象
       public Person{
        private String name;
        private int age;
        private Date[] appointments;
        
        getters and setters ...
       }
 
      B.生成要用js調(diào)用的java類
       public class Remote{
        private Person person;
        
        public void setPerson(Person p){
         this.person = p;
        }
       }
      
      C.通過js構(gòu)造Bean參數(shù)然后調(diào)用方法(此時將涉及到轉(zhuǎn)換,要開啟對bean的轉(zhuǎn)換器BeanConverter的支持)
       var p = {
          //name屬性賦值
          name:"Fred Bloggs",
          //age屬性賦值
          age:42,
          //appointments數(shù)組屬性賦值
          appointments:[ new Date(), new Date("1 Jan 2008") ]
         };
       //DWR調(diào)用java對象方法,傳入Bean對象參數(shù)值
       Remote.setPerson(p);
       
       **注意:這里不用注冊回調(diào)函數(shù),因為setPerson()方法返回void,即沒有返回值,所以不需要回調(diào)函數(shù)處理返回結(jié)果。
         當然如果非要注冊回調(diào)函數(shù)也沒有問題,只不過回調(diào)函數(shù)中將不會接收到任何返回數(shù)據(jù)。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
向DWR傳遞map/返回map等...
轉(zhuǎn)貼:Matlab GUIDE使用總結(jié)--Matlab GUI界面
DWR 使用方法
Retrofit – Java(Android) 的REST 接口封裝類庫
DWR學習心得
Ajax簡介
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服