第17章数据处理和数据服务_第1页
第17章数据处理和数据服务_第2页
第17章数据处理和数据服务_第3页
第17章数据处理和数据服务_第4页
第17章数据处理和数据服务_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 17章 数据处理和数据服务 从本章开始学习如何在 Flex应用中操纵数据。Flex 2在先前的版本基础上加强了客户端的数据功能,同时在 Flex的产品线中加入了 Flex Data Service 2,使 Flex应用更方便的与服务器端进行数据交互。本章主要介绍 Flex中数据的相关特性,简要的介绍 Flex数据服务。17.1 Flex中的数据处理 在 Flex应用开发过程中,数据是不可缺少的一部分。获取服务器端数据,并对数据进行操作,成为开发应用过程非常重要的部分。本节主要介绍 Flex中数据处理的关键步骤,包含绑定数据(Binding Data)、存储数据( Storing Data)、验证数据(Validating Data)和格式化数据( Formatting Data)。 数据在用户与应用交互中是无处不在的。从用户在应用界面输入数据,请求返回信息,到服务器端返回数据并在见面上显示数据,经历了数个数据处理阶段,如图所示。17.2 绑定数据 “ 绑定 ” 是非常形象的概念。例如把网上银行帐户和你的信用卡帐户绑定,网上购物消费后,信用卡帐号的余额也会发生改变。而对于数据,绑定是在不同的对象之间进行数据的捆绑过程,当其中一个对象改变了,另一个对象也发生改变。绑定为应用的数据传递提供了一种便捷的方式。这里的对象通常指 Flex组件的属性,例如文本控件的text属性,数据类组件的 dataProvider属性等。 通常,一个数据绑定由三部分构成,包括绑定源、绑定目标和触发事件。当事件被触发后,绑定发生,完成从绑定源到绑定目标的数据拷贝。 Flex 2中提供了三种数据绑定的方法: “ ” 语法、 MXML的 标签和 ActionScript中的 BindingUtils方法。下面分别介绍这 3种方法。17.2.1 使用 “ ” 进行数据绑定 在使用 “ ” 进行绑定时,绑定源可以是控件属性、 ActionScript表达式、 ActionScript函数。 使用 “ ” 语法进行数据绑定是最简单的数据绑定方式。使用该方法时, 将绑定的源属性括起来,作为目标属性的值,具体形式如下。 目标属性的值 =源属性 ;17.2.2 使用 标签进行数据绑定 在 Flex应用中,还可以使用 标签取代 “ ” 进行数据绑定。当使用 标签时,需要提供为标签提供源属性和目标属性,这和使用 “ ” 是一致的。 标签定义数据绑定的一般格式如下: 17.2.3 使用 ActionScript定义绑定 前面使用 “ ” 或者 标签定义数据绑定,都是在 MXML中进行。 Flex还支持在ActionScript中使用mx.binding.utils.BindingUtils类来定义数据绑定。该类的 bindProperty()用来将属性绑定到变量上。 bindSetter()方法可以定制的方式实现绑定。 1使用 bindProperty()方法 2 bindSetter()方法17.2.4 多个源属性到目标属性的绑定 标签可以实现多个不同的源属性到相同的目标属性的绑定。这是通过多个具有相同目的属性的绑定标签来完成的。但也可以与“ ” 组合定义使用。 下面的例子使用用多个源属性的绑定,一个采用标签,一个采用 “ ” ,如图所示。17.2.5 源属性到多个目标属性的绑定 同样,同一个源属性可以绑定到多个不同的目标属性上。在接下来的这个例子中,文本输入控件的 text属性绑定到两个数据模型上,这两个数据模型有分别对应两个标签控件的 text属性,如图所示。17.3 存储数据 Flex中存储数据主要依靠数据模型来实现。可以根据应用的需要,在数据模型中定义相应的属性用来保存应用数据。 数据模型广泛的用于 Flex前台界面和后台服务器之间交互。用户界面的数据在发送到服务器端处理之前,被保存在数据模型中。同样,数据模型也可以保存来自服务器处理完成的数据。从 MVC设计模式的角度来看,数据模型位于模型层面,起到承上启下的作用。 数据模型模型的引入,使得数据的验证和格式化都变得容易。同时数据模型的定义可以包含客户端的业务逻辑,通过不同数据的组合,大大增强了数据的内聚性。 本节主要介绍数据模型的定义、验证和使用。17.3.1 数据模型定义 数据模型是 ActionScript对象。数据模型的定义有两种方法: MXML标签、 ActionScript函数或者ActionScript类。通常是根据实际情况,决定使用哪种方法。对于简单的数据结构使用 MXML来定义,而 ActionScript函数或者 ActionScript类方法一般用来定义复杂的数据结构和客户端业务逻辑。 1.使用 MXML标签 2.使用 ActionScript函数和 ActionScript类17.3.2 数据模型的验证 数据模型的验证是对数据模型中保存的数据的正确性进行检验。在 Flex中,数据模型的验证使用数据验证器( Data Validator)。 在下面的例子中,对 student数据模型中不同的数据定义了不同的验证器,17.3.3 数据模型作为值对象 数据模型作为值对象,是指将数据模型中保存的数据值,以对象的方式,在控件之间传递。通常用在远程服务调用返回时,将结果中一系列数据或者多个对象数据保存在某个数据模型中。该模型作为值对象在远程服务和数据控件之间传递数据。这样会使得在 Flex应用中管理和处理数据变得简单。 在下面的例子中, bookDM存储了远程服务操作的结果。 bookInfo组件是一个自定义组件,从bookDM模型获取数据并显示当前选择图书的详细信息。17.3.4 XML数据模型 XML数据模型是指数据模型中保存的是 XML数据,对其处理遵循 XML标准。在使用数据模型时,有时会涉及 XML数据。为此 Flex专门提供了了 标签,用于定义 XML数据模型。 该数据模型在与 不同之处,主要在于编译时会被编译为 ActionScript的 xml.XMLNode的数据或者是 XML对象。在 中可以使用 “ ” 进行数据绑定。 使用 时,可以把该标签下的内容看作一个 XML文档。如果将 的 source属性设为 E4X,就可以使用强大的 E4X处理 XML。这里需要注意的是,在当前 Flex版本不能内的节点值作为绑定源。17.4 验证数据 数据验证是 Flex中的数据进行正确性验证。数据的正确性涉及数据的格式、类型、数值等。本节主要介绍 Flex数据验证机制,主要包括:数据验证器的创建、数据验证的触发、错误提示和预定义标准验证器。17.4.1 使用标准数据验证器 在 Flex中,为了更加方便的进行数据验证。对于常用数据,提供了的预定义数据验证器,主要包括以下几类。 CurrencyValidator:货币数据验证。 CreditCardValidator:信用卡数据验证。 DateValidator:日期数据验证。 NumberValidator :数字验证。 PhoneNumberValidator:电话号码验证。 EmailValidator:邮箱地址验证。 ZipCodeValidator :邮政区号验证。17.4.2 创建数据验证器 Flex中数据验证是由验证器( Validator)来执行的。验证器的创建使用 标签或者指定验证器的标签,还可以使用验证器对应的类在 ActionScript中创建。下面以 为介绍创建过程。 1使用 MXML标签 2在 ActionScript中创建17.4.3 触发验证器 在 Flex应用中,数据验证是可以被在事件发生时触发。这样,用户可以在需要验证时,随时触发验证。最常用的触发方式是使用按钮。当单击某个按钮后,对数据进行验证。 在验证器定义过程中,可以通过以下两个属性定义验证的触发: trigger:表示触发验证的对象(通常是按钮)。例如:trigger=“button“;。 triggerEvent:表示对象触发验证事件类型 (如鼠标单击,鼠标滑入滑出等 )。例如: triggerEvent=“click“。17.4.4 验证错误提示 验证错误提示是当数据验证发生错误时,用户界面上显示的与错误有关的信息。如前面示例中,日期格式不正确的显示的错误提示。验证控件在默认情况下已经显示默认的提示错误,但提示的语言使用的都是英文。为了从更加贴合应用的实际,可以使用不同的属性定义提示信息。 在下面的例子中,对电话号码的验证器,定义了不同的提示信息。用户单击验证按钮,触发对输入电话号码的验证。在不同错误下,验证提示信息如图所示。17.5 格式化数据 格式化数据是对数据进行的处理,按照某种约定的格式以统一的形式输出。在 Flex中数据的格式化是由格式器( formatter)完成的。格式器是一个可配置的对象,用来将原始数据格式化为定制数据。通常数据的格式是从显示的角度对绑定到组件上的数据进行的,主要是减少人工处理的工作量,提高数据操作的效率。本节主要讲述如何使用数据格式器,包括格式器的创建、触发、错误的处理和常用的格式器。17.5.1 使用标准的格式器 在 Flex中,为了更加方便的进行数据格式化。对于常用数据,提供了的标准的数据格式器,主要包括以下几类。 CurrencyFormatter:货币数据格式化。 DateFormatter:日期数据格式化。 NumberFormatter :数字格式化。 PhoneFormatter:电话号码格式化。 ZipCodeFormatter :邮政区号格式化。 在 Flex应用中如果需要对上述数据进行格式化,只需使用相应的 MXML标签或者 ActionScript类即可。每类格式器的使用方法类似,这里只介绍通用格式化器的使用方法。17.5.2 创建数据格式器 数据格式器将数据格式为字符串,实现原始数据到字符串的单向转换。最典型的情况是在文本域中显示数据之前触发数据的格式化。 创建格式器,使用的 MXML标签是 或者指定格式化器的标签。主要涉及如下的属性和方法: formatString:定义数据的格式属性。它是格式化的基础。例如: formatString=“YYYY-MM-DD“,是将输入的日期格式为年 -月 -日这样的格式。 format():格式化方法。该方法输入是需要格式化的数据,输出是格式字符串。当格式化发生错误时,返回空值,同时错误信息会写入格式器的 error属性中。 创建格式器的一般过程如下: ( 1)在 MXML代码中声明一个格式器,给定合适的格式属性。 ( 2)使用 对绑定数据调用格式器的 format()方法,将要格式化的数据作为 format()方法的参数。17.5.3 触发格式器 格式器的触发需要调用格式器的 format()方法。在 Flex应用中可以在任何地方调用 format()方法。通常格式器的触发是作为事件的响应,如按钮的单击事件。 下面是一个通过按钮事件触发格式器的例子。创建了一个日期格式器。当用户单击格式化按钮时,作为鼠标单击事件的响应,格式器触发,对输入的日期格式化并将格式数据显示到 TextInput控件,如图所示。17.5.4 错误处理 在格式化数据的过程可能会发生错误,错误处理是用来将错误信息返回给调用者。错误处理涉及到格式器的 error属性。当发生格式错误时,错误描述信息写入格式器的 error属性当中。 通常,当发生格式错误时 format()方法会返回空字符串,同时错误信息也会被记录。所以当检测到返回字符串为空时,可以访问error属性获得错误原因。 另外,用户也可以使用 ActionScript,编写自定义的错误处理函数来处理格式化错误。下面的例子中定义了一个简单的错误处理函数。17.6 Flex数据服务 Flex 2系列产品对开发者创建和管理面向服务的丰富因特网应用程序( RIAs)的方式做了几个重要改进。其中数据服务从原有的功能中划分出来,可以作为独立的服务安装。特别是数据服务中的新的性能,使得与服务器端的交互比以前任何版本都显得方便。本节将简要介绍 Flex数据服务,详细的内容在后面的章节重点介绍。17.6.1 数据服务概述 在 Flex 2中数据服务指的是 Flex Data Services 2。它与早期的Flex数据管理相比,向前跨了重大的一步,它提供一组基于信息的服务,具有支持同步数据的能力。这显著的提升了开发者的生产率,不用花时间去编写、调试和维护,往往容易出错,并要求在客户端、程序和数据库不同层间移动数据的代码上。 Flex数据服务具有以下特点。 Flex数据服务提供一系列强大的服务器端数据管理功能,使开发人员能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论