`
ihuashao
  • 浏览: 4722175 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Scripting Introduction

阅读更多

Scripting Introduction

DWR根据dwr.xml生成和Java代码类似的Javascript代码。

相对而言Java同步调用,创建与Java代码匹配的Ajax远程调用接口的最大挑战来至与实现Ajax的异步调用特性。

DWR通过引入回调函数来解决这个问题,当结果被返回时,DWR会调用这个函数。

有两种推荐的方式来使用DWR实现远程方法调用。可以通过把回调函数放在参数列表里,也可以把回调函数放到元数据对象里。

当然也可以把回调函数做为第一个参数,但是不建议使用这种方法。因为这种方法在处理自动处理http对象时(查看"Alternative Method")上会有问题。这个方法主要是为向下兼容而存在的。

简单的回调函数

假设你有一个这样的Java方法:

public class Remote {
    public String getData(int index) { ... }
}

我们可以在Javascript中这样使用:

<script type="text/javascript"
    src="[WEBAPP]/dwr/interface/Remote.js"> </script>
<script type="text/javascript"
    src="[WEBAPP]/dwr/engine.js"> </script>
...

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

Remote.getData(42, handleGetData);

42是Java方法getData()的一个参数。

此外你也可以使用这种减缩格式:

Remote.getData(42, function(str) { alert(str); });

调用元数据对象(Meta-Data)

另外一种语法时使用"调用元数据对象"来指定回调函数和其他的选项。上面的例子可以写成这样:

Remote.getData(42, {
  callback:function(str) { alert(str); }
});

这种方法有很多优点:易于阅读,更重要的指定额外的调用选项。

超时和错误处理

在回调函数的元数据中你可以指定超时和错误的处理方式。例如:

Remote.getData(42, {
  callback:function(str) { alert(str); },
  timeout:5000,
  errorHandler:function(message) { alert("Oops: " + message); }
});

查找回调函数

有些情况下我们很难区分各种回调选项(记住,Javascript是不支持函数重载的)。例如:

Remote.method({ timeout:3 }, { errorHandler:somefunc });

这两个参数之一是bean的参数,另一个是元数据对象,但是我们不能清楚的告诉DWR哪个是哪个。为了可以跨浏览器,我们假定null == undefined。 所以当前的情况,规则是:

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

创造一个与Java对象匹配的Javascript对象

假设你有这样的Java方法:

public class Remote {
  public void setPerson(Person p) {
    this.person = p;
  }
}

Person对象的结构是这样的:

public Person {
  private String name;
  private int age;
  private Date[] appointments;
  // getters and setters ...
}

那么你可以在Javascript中这样写:

var p = {
  name:"Fred Bloggs",
  age:42,
  appointments:[ new Date(), new Date("1 Jan 2008") ]
};
Remote.setPerson(p);

在Javascript没有出现的字段,在Java中就不会被设置。

因为setter都是返回'void',我们就不需要使用callback函数了。如果你想要一个返回void的服务端方法的完整版,你也可以加上callback函数。很明显DWR不会向它传递任何参数。

<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://wiki.javascud.org/display/dwrcn/Scripting+Introduction" dc:identifier="http://wiki.javascud.org/display/dwrcn/Scripting+Introduction" dc:title="Scripting Introduction" trackback:ping="http://wiki.javascud.org/rpc/trackback/5012" /> </rdf:RDF> --><!-- Root decorator: all decisions about how a page is to be decorated via the inline decoration begins here. --><!-- Switch based upon the context. However, for now, just delegate to a decorator identified directly by the context. -->
分享到:
评论

相关推荐

    INTRODUCTION TO PYTHON SCRIPTING FOR MAYA ARTISTS.

    This guide provides an extensive introduction to Python scripting specifically tailored for Maya users, aiming to equip beginners with the foundational knowledge required to leverage Python ...

    DWR.xml配置文件说明书(含源码)

    DWR.xml配置文件说明书 1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    Introduction to Scripting in HFSS

    使用脚本是一种快速、有效的方法来完成您想要重复的任务。当您执行一个脚本时,脚本中的命令是贯穿的。您可以使用任何文本编辑器编写脚本,也可以从HFSS接口中记录脚本。在从HFSS中记录脚本之后,如果有必要,可以...

    Linux Shell Scripting Cookbook

    Introduction 7 Printing in the terminal 9 Playing with variables and environment variables 12 Doing math calculations with the shell 17 Playing with file descriptors and redirection 19 Arrays and ...

    Windows.PowerShell.Scripting.Guide.pdf

    powershell Introduction to programming grammar, specifications, cases, etc., introductory books for beginners

    Windows Admin Scripting Little Black Book, Second Edition(Jesse M. Torres)

    A bonus introduction chapter is provided showing users how to select the best scripting language and how to get the most out of scripting resources. 注: 此文件仅供预览, 若需要请购买正版. ...

    FDTD Solutions 7p5 Introduction

    **FDTD Solutions 7p5 Introduction** 有限差分时域法(Finite-Difference Time-Domain, FDTD)是一种广泛应用于电磁场仿真计算的方法,尤其在光学、微波工程、通信和纳米技术等领域有着重要的应用。FDTD Solutions...

    Advanced Bash-Scripting Guide <>

    A Detailed Introduction to I/O and I/O Redirection F. Standard Command-Line Options G. Important Files H. Important System Directories I. Localization J. History Commands K. A Sample .bashrc File L. ...

    abs-guide----Advanced Bash-Scripting Guide

    第4章“Introduction to Variables and Parameters”介绍了变量和参数的使用,包括变量的赋值、类型以及特殊变量类型,例如环境变量和位置参数。 第5章“Quoting”讲解了如何引用变量,以防止shell对其中的内容进行...

    Advanced Bash-Scripting Guide 英文原版

    Introduction** 这部分是入门章节,旨在让读者对Shell编程有一个初步的认识。第1章“Shell Programming!”介绍了Shell脚本的基础概念,包括脚本的作用、编写脚本的基本步骤以及如何运行一个Shell脚本。笔记部分...

    zeek 系列实操实验

    Lab 6: Introduction to Zeek Scripting Lab 7: Introduction to Zeek Signatures Lab 8: Advanced Zeek Scripting for Anomaly and Malicious Event Detection Lab 9: Profiling and Performance Metrics of Zeek ...

    3 SAP_MM___Functionality_and_Technical_Configuration.rar

    SAP MM(Materials Management)是SAP企业资源规划系统中的一个关键模块,专注于物料管理和采购流程。本资料“3 SAP_MM___Functionality_and_Technical_Configuration.rar”旨在深入探讨该模块的功能性和技术配置,...

    JavaFX Script - Dynamic Java Scripting for Rich Internet-Client-Side Applications

    1. **第一章:JavaFX 入门**(Introduction to JavaFX) - 介绍 JavaFX 的基本概念及其在富客户端应用开发中的作用。 - 解释 JavaFX Script 如何与其他 JavaFX 技术组件协同工作。 2. **第二章:快速入门**...

    An Introduction to Scheme and its Implementation

    Scheme is a clean and fairly small but powerful language, suitable for use as a general-purpose programming language, a scripting language, an extension language embedded within applications, or just ...

    AutoBuild script mail part brief introduction

    通过`Scripting.FileSystemObject`接口,读取.txt文件的内容,并将其写入邮件正文中。最后,调用`Mail.Send`方法发送邮件。 总结起来,AutoBuild 脚本邮件部分是一个高度自定义化的自动化工具,用于高效地传递编译...

    SIMCA14_User_Guide.pdf

    2. Introduction to multivariate data analysis 3. Overview of SIMCA 4. Quick Access Toolbar 5. File 6. SIMCA import 7. Home 8. Data 9. Batch 10. Analyze 11. Predict 12. Plot/List 13. View ...

Global site tag (gtag.js) - Google Analytics