`
lucifinilhades
  • 浏览: 86821 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

DWR中的JavaScript

阅读更多

DWR根据dwr.xml配置文件或注解中的信息来生成和Java代码类似的JavaScript代码。DWR调用Java代码是同步的,但是创建与Java代码匹配的Ajax远程调用接口需要实现Ajax的异步调用特性,所以DWR通过引入回调函数来解决此问题,当结果被返回时,DWR会调用这个函数。

简单的回调函数

首先创建一个Java类,代码如下:

@RemoteProxy
public class SimpleRemote {
    @RemoteMethod
    public String getXMLData(int index) {
        // write code.
    }
}

该类可以在JavaScript中这样使用:

/*
    <script type="text/javascript" src="dwr/engine.js"></script>
    <script type="text/javascript" src="dwr/interface/SimpleRemote.js"></script>
*/

var handleGetData = function(str) {
    alert(str);
};

SimpleRemote.getXMLData(1, handleGetData);

其中“1”是Java方法getXMLData()参数,此外也可减缩格式:

SimpleRemote.getXMLData(1, function(str) {
    alert(str);
});

调用元数据对象

通过使用“调用元数据对象”来指定回调函数和其他选项,例如:

SimpleRemote.getXMLData(1, 
{
    callback: function(str) { alert(str); },
    timeout: 2000,
    errorHandler: function(msg) { alert("error: " + msg); }
});

在回调函数的元数据对象中可以指定超时和错误的处理方式。

 

查找回调函数

  • 如果第一个或最后一个参数是函数,则它就是回调函数,没有元数据对象,并且其他参数都是Java的方法参数;
  • 如果最后一个参数是一个对象,这个对象中有一个callback成员,并且它是个函数,则这个对象就是元数据对象,其他的都是Java方法参数;
  • 如果第一个参数是null,假设没有回调函数,并且其他的都是Java方法参数。尽管如此,我们会检查最后一个参数是不是null,如果是就发出警告;
  • 如果最后一个参数是null,那么就是没有callback函数。

创建与Java对象匹配的JavaScript对象

为了创建一个与Java对象匹配的JavaScript对象,首先需要创建一个供远程调用的类,实现代码如下:

@RemoteProxy
public class GetRemoteUser {
    private User user;

    @RemoteMethod
    public void setUser(User p) {
        this.user = p;
    }
}

其中User类的代码如下:

@DataTransferObject
class User {
    @RemoteProperty
    String firstName;
    @RemoteProperty
    String lastName;
    @RemoteProperty
    Date birthday;
}

这样就可以在JavaScript中写成如下形式:

var user = {
    firstName: 'Bear',
    lastName: 'Bibeault',
    birthday: new Date()
};

GetRemoteUser.setUser(user);

在JavaScript中没有出现的字段,在Java中就不会被设置。因为setter的返回类型都是void,这样就不需要使用callback函数了。如果需要一个返回void的服务器端方法,也可以添加callback函数,但DWR不会向它传递任何参数。

 

 

 

分享到:
评论

相关推荐

    DWR中文文档DWR

    - **RemoteObject**:用于封装服务器端的Java对象,使其能在JavaScript中调用。 - **Call**:表示一个Ajax调用,包括方法名、参数等信息。 - **Update**:用于更新HTML元素,通常与Ajax响应关联。 5. **使用场景...

    dwr和javascript的相互应用 ajax的应用 dwr的登陆验证

    在这个例子中,DWR被用来在客户端(JavaScript)和服务器端(Java)之间传递登录信息,实现验证过程。 首先,我们需要在服务器端创建一个Java类,该类包含一个或多个方法来处理登录验证。这些方法可能包括检查...

    DWR js框架 javascript框架 web与java交互 Direct Web Remoting Ajax开源框架

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许Web应用程序在客户端的JavaScript和服务器端的Java之间进行直接的、异步的通信,实现了Web应用中的Ajax功能。DWR通过自动化处理JavaScript和Java之间的类型...

    DWR中文文档v0.9PDF

    DWR是一种JavaScript库,它允许Web应用程序与服务器端Java代码进行实时交互,实现AJAX(Asynchronous JavaScript and XML)功能,无需页面刷新就能更新部分网页内容,极大地提升了用户体验。 DWR的核心功能包括: ...

    DWR中文帮助文档(最好的DWR中文帮助文档)

    7. **事件处理与回调**:在JavaScript中,DWR提供了事件监听器和回调函数,使得用户可以自定义在远程调用成功或失败时的行为。 8. **错误处理与调试**:文档会介绍如何处理DWR调用过程中出现的错误,以及如何开启...

    DWR中处理List

    通过上述示例可以看出,在DWR中处理List、Set和Map等集合类型的关键在于正确配置DWR XML文件,并编写合适的客户端JavaScript代码来调用服务端的方法及处理返回的数据。这种方式大大简化了前后端之间的数据交换过程,...

    DWR中文官方文档-打包下载

    DWR提供了丰富的JavaScript API,与jQuery、Prototype等库良好集成,方便在现有项目中使用。 8. **DWR的安全性和最佳实践**: - 应该限制暴露给客户端的方法,避免暴露敏感信息。 - 使用最新版本的DWR,以获取...

    JavaScript:DWR的用法实例

    JavaScript Direct Web Remoting (DWR) 是一个开源的JavaScript库,它允许Web应用程序在客户端的JavaScript和服务器端的Java之间进行安全、简单的异步通信。这个框架极大地简化了AJAX(Asynchronous JavaScript and ...

    DWR中文文档 ,非常详细

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的、双向的JavaScript和服务器端代码交互。这个技术允许开发者在客户端浏览器上执行服务器端的方法,就像它们是本地JavaScript函数一样,极大...

    dwr实例,JavaScript调用java方法的小例子

    DWR简化了AJAX(Asynchronous JavaScript and XML)应用的开发,使得开发者可以方便地在JavaScript中直接调用Java方法,仿佛它们是本地函数一样。 在"TestDwr"这个压缩包中,我们可以预期包含了一个简单的DWR实例,...

    DWR中文教程(教程实在不可多得)

    - **调用Java方法**:在JavaScript中,可以直接调用这些对象的方法,就像它们是本地函数一样。 - **处理回调**:DWR使用异步回调机制,当服务器响应准备好后,会自动调用预先指定的回调函数。 - **数据交换格式**...

    DWR中文教程(外带DWR包)

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的JavaScript到服务器端Java对象的通信。这个“DWR中文教程(外带DWR包)”为初学者提供了一个全面的入门指南,帮助理解并掌握DWR的基本概念和...

    DWR2.0中文文档

    #### DWR中的JavaScript - **简单的回调函数**:介绍如何使用DWR进行异步调用,并在调用完成后执行回调函数。 - **调用元数据对象**:元数据对象包含关于服务和方法的信息,可以用来动态生成客户端调用代码。 DWR...

    DWR中文文档 (DWR 2.0)

    4. **灵活的对象模型**:分析JavaScript中对象模型的特点,以及如何利用这些特点来优化代码结构。 5. **本节总结**:概括上述JavaScript高级特性的应用技巧,以及它们如何帮助开发者更高效地使用DWR。 通过以上内容...

    DWR中文文档(pdf)

    #### 五、DWR中的JavaScript使用技巧 ##### 5.1 简单的回调函数 - **使用方法**: - 定义一个简单的JavaScript函数来处理服务器端返回的结果。 - 示例代码: ```javascript function handleResponse(data) { //...

    DWR中文文档pdf文档 实例下载

    `engine.js`是DWR的JavaScript库,它提供了一组API,使得开发者可以在浏览器中直接调用服务器上的Java方法。 2. **Util**:`util.js`是DWR的实用工具库,包含了一系列辅助函数,如数据类型转换、事件处理、AJAX请求...

Global site tag (gtag.js) - Google Analytics