关于清单 3,这里还有几点说明:
一个 MXML 文档的根元素是 Application 类的一个子类。
mx:Style 元素允许 CSS 属性定义 UI 组件的本地样式。样式设计通过使用本地样式定义(见 清单 3)、对外部样式表的引用、组件内的内联样式以及 ActionScript 中的 setStyle 方法完成。
RemoteObject 类表示与服务器执行远程操作的一个 HTTP 服务对象。
mx:Script 元素包括 CDATA 区域中的 ActionScript 代码块。
有一个布局(即 VBox 类)。
每次在应用程序中声明一个 UI 组件(例如,TextArea)时,就产生一个实例变量,稍后可使用组件的 id 属性在应用程序内引用该变量。
数据绑定通过大括号执行(例如, 将 TextArea 元素的 text 属性绑定到 ActionScript message 实例变量)。
ActionScript
MXML 定义 GUI,而 ActionScript 提供用于处理事件、绑定数据(通过 [Bindable] 元数据标记)的行为,以及调用远程服务的能力。在 清单 3 中,createContact、editContact、deleteContact 和 getAllContacts 方法都在服务器端调用远程方法。调用远程方法时,ActionScript 就有机会通过声明回调函数处理结果和任何错误了。在 清单 3 中,handleResult 函数将结果作为一个 Object 接收,并将其投射到一个 ArrayCollection。BlazeDS 将 List 转化为客户端上的一个 ArrayCollection。
清单 4 展示了 ActionScript 类 Contact,创建该类的目的在于表示 Flash 端的联系对象。
清单 4. ActionScript Contact 类
[RemoteClass(alias="bcit.contacts.Contact")]
public class Contact {
public function Contact() { id = -1; }
public var id:Number;
public var lastName:String;
public var firstName:String;
public var emailAddress:String;
public var phoneNumber:String;
public function toString():String {
return id + ", " + firstName + " " + lastName + " " + emailAddress
+ " " + phoneNumber;
}
}
}
这些 ActionScript 对象被发送到服务器端,BlazeDS 在此发挥其魔力并将 ActionScript 对象转化为 Java 对象。ActionScript Contact 类被看作一个 Data Transfer Object (DTO)。