`

DWR学习笔记(五)

    博客分类:
  • DWR
阅读更多

六.DWR中的JavaScript简介:回调函数的声明方式、查找回调函数的原则、创建与java对象匹配的js对象
 
  1.简单说明:DWR根据dwr.xml生成和Java代码类似的Javascript代码。
     DWR通过引入回调函数来解决这个问题,当请求结果被返回后,DWR会调用这个回调函数。
 
  2.回调函数的声明方式:有两种,一是可以把回调函数放在参数列表里;一是可以把回调函数放到元数据对象里。
  
   (1)参数列表的回调函数(前边一直用的方式)
     
     例子:
       A.生成一个java对象
        public class Remote{
         public String getData(int index){
          .........
         }
        }
        
       B.通过DWR调用
       <script type="text/javascript">
        //handleGetData就是回调函数的方法名
        Remote.getData(42, handleGetData);
        //声明回调函数
        function handleGetData(data){
         alert(data);
        }
       </script>
       
       C.也可以将B中的回调函数写成缩写
       <script type="text/javascript">
        //handleGetData就是回调函数的方法名
        Remote.getData(
         42, 
         //匿名回调函数
         function(data){
          alert(data);
         }
        );
       </script>
   
   (2)元数据对象中的回调函数(推荐使用):这种方式较为规范
     
     例子:任然使用上面的java类Remote类。只是将DWR的js调用做一下更改
       
       Remote.getData(
        42,
        //定义元数据对象,其中字符串callback是匿名对象的属性,
        //而function(data){alert(data);}是callback的属性值。
        {
         callback:function(data){
            alert(data);
           }
        }
        //这里将匿名对象作为了最后一个参数值,匿名对象中存有回调函数,
        //这样DWR就可以通过找到callback,得到它的值,并作为回调函数。
       );
       
       **说明:通过这种调用元数据对象中的回调函数的好处就是可以指定额外的调用选项。
       
     例子:
       Remote.getData(
        42,
        //元数据对象,内部有多个属性及对应的属性值
        {
         //回调函数,注意函数仍然是匿名函数
         callback:function(data){alert(data);},
         //在回调函数的元数据对象中可以指定超时和错误的处理方式
         timeout:5000,
         errorHandler:function(message){alert("Oops: " + message);}
        }
       );
       
    
  3.查找回调函数的原则:我们通过js调用java对象的方法时指定了回调函数,
         那么DWR是怎样识别回调函数的呢?为什么它能准确的调用到回调函数。
         那是因为DWR通过js调用java对象的方法是传入的回调函数的位置是有规定的
         (如:一般最后一个参数用于指定回调函数)
         
      A.如果第一个(针对java对象方法不接收参数的情况)或最后一个参数是一个函数,那么它就是回调函数,其他参数都是Java的方法参数。
      
      B.如果最后一个参数是一个对象,这个对象中有一个"callback"属性(经过验证必须用callback字符串作为属性名,否则不起作用),
        并且它是个函数,那么这个对象就是元数据对象,它将作为回调函数的拥有者,其他参数都是Java方法参数。
      
      C.如果第一个参数是null ,我们就假设没有回调函数,其他的都是Java方法参数。
        尽管如此,我们会检查最后一个参数是不是null,如果是就发出警告。不是那就正常!
      
      D.如果最后一个参数是null,那么就没有callback函数。
      
  4.创建与java对象匹配的js对象:就是通过创建js对象,
           然后通过js调用java对象方法的时候为方法传递参数(主要指Bean对象参数)
           
      A.产生javaBean对象
       public Person{
        private String name;
        private int age;
        private Date[] appointments;
        
        getters and setters ...
       }
 
      B.生成要用js调用的java类
       public class Remote{
        private Person person;
        
        public void setPerson(Person p){
         this.person = p;
        }
       }
      
      C.通过js构造Bean参数然后调用方法(此时将涉及到转换,要开启对bean的转换器BeanConverter的支持)
       var p = {
          //name属性赋值
          name:"Fred Bloggs",
          //age属性赋值
          age:42,
          //appointments数组属性赋值
          appointments:[ new Date(), new Date("1 Jan 2008") ]
         };
       //DWR调用java对象方法,传入Bean对象参数值
       Remote.setPerson(p);
       
       **注意:这里不用注册回调函数,因为setPerson()方法返回void,即没有返回值,所以不需要回调函数处理返回结果。
         当然如果非要注册回调函数也没有问题,只不过回调函数中将不会接收到任何返回数据。

分享到:
评论

相关推荐

    DWR 教程 中文API DWR.xml配置文件说明 DWR学习笔记

    首先,"DWR学习笔记"提供了对DWR基础概念、核心功能以及实际应用的概述。这些笔记可能包含了DWR的基本架构,如它如何通过AJAX技术实现实时的Web交互,以及如何创建和调用服务器端的Java方法。 "DWR中文API"是DWR库...

    DWR学习笔记及经验总结

    在“DWR学习笔记及经验总结”中,我们可以期待找到以下关键知识点: 1. **DWR的基本概念**:了解DWR的核心理念,包括远程方法调用(Remote Method Invocation)、反向Ajax以及它如何通过JSON或XML格式传递数据。 2...

    dwr学习笔记pdf文件

    ### dwr学习笔记pdf文件知识点概述 #### 一、DWR框架简介 - **DWR**(Direct Web Remoting)是由GetAhead公司开发的一款用于实现Ajax应用的框架。该框架的核心价值在于允许客户端JavaScript直接调用服务器端Java类...

    dwr学习笔记和总结

    ### dwr学习笔记和总结 #### 一、DWR简介 DWR (Direct Web Remoting) 是一个简化Ajax开发的框架,它使得JavaScript能够直接调用服务器端的Java方法成为可能,无需编写复杂的Ajax代码。这极大地提高了开发效率,并...

    DWR学习笔记和与spring整合练习

    **DWR(Direct Web Remoting)**是一种JavaScript库,它允许Web...通过深入学习和实践"DWR学习笔记和与spring整合练习",开发者可以掌握DWR的精髓,熟练运用其与Spring的整合,打造出高效、安全、易维护的Web应用程序。

    DWR学习笔记-HelloWorld篇

    【标题】:“DWR学习笔记-HelloWorld篇” 在IT领域,DWR(Direct Web Remoting)是一个开源的Java框架,它允许JavaScript在浏览器端直接调用服务器端的Java方法,实现了网页与服务器的实时交互,类似于Ajax技术,但...

    ajax dwr学习笔记和jar文件

    五、DWR的实践应用 DWR广泛应用于需要实时更新数据的Web应用中,如聊天室、在线协作工具、动态图表等。通过DWR,开发者可以构建更加流畅、互动性强的用户体验,而无需刷新整个页面。 六、学习资源 1. **官方文档**...

    DWR学习笔记(下载)

    **DWR(Direct Web Remoting)学习笔记** DWR是一种Java技术,用于在浏览器和服务器之间实现双向通信,使得Web应用程序能够实时更新和交互。它允许JavaScript直接调用服务器端的Java方法,就像它们是本地函数一样,...

    DWR学习笔记

    **DWR(Direct Web Remoting)**是一种Java...总之,DWR学习笔记将引导你探索如何利用DWR、ExtJS和Spring构建高效、交互性强的Web应用。通过深入学习和实践,你将能够熟练运用这些工具和技术,提升你的Web开发能力。

    DWR学习资料

    DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0学习笔记.txt DWR3.0学习网址.txt dwr分页.doc DWR分页代码.doc DWR中文文档.doc DWR中文文档.pdf dwr做comet的完整实现.doc Spring整合DWR comet ...

    dwr学习笔记(一个简单猜数字游戏)

    总结来说,这个"DWR学习笔记"示例涵盖了以下知识点: 1. DWR的基本概念和工作原理,包括Reverse Ajax机制。 2. 如何在服务器端配置DWR,定义可调用的Java服务。 3. 客户端如何使用DWR的JavaScript库与服务器进行通信...

    DWR的学习资料,DWR学习必备

    DWR使用笔记.chm:这可能是一份详细的DWR使用手册,包含了如何集成DWR到项目中、配置DWR引擎、创建远程接口以及处理各种交互的实例。通过阅读这份笔记,你可以了解到DWR的基本概念、配置步骤以及实际应用技巧。 dwr...

    DWR学习笔记(如何配置DWR和工程实例)

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java对象之间的双向通信。它使得动态、实时的Web界面成为可能,而无需刷新整个页面。以下是对DWR配置和工程实例的详细解释: ...

    DWR实战学习笔记.txt

    技术分享:DWR实战学习笔记

    DWR 2.0M3 学习笔记

    阅读"DWR学习笔记.doc"文件将有助于系统地掌握这些知识点,通过实践操作加深理解,从而更好地利用DWR构建交互性强、用户体验良好的Web应用。在学习过程中,结合源码分析可以更深入地理解DWR的工作机制,提升自己的...

    dwr学习笔记

    《DWR学习笔记详解》 DWR(Direct Web Remoting)是一种开源JavaScript库,它允许在Web浏览器和Java服务器之间进行实时、双向通信,极大地增强了Web应用的交互性。DWR使得开发者能够像操作本地对象一样操作服务器端...

Global site tag (gtag.js) - Google Analytics