
数据处理和数据服务.ppt
26页第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的
Flex还支持在ActionScript中使用类来定义数据绑定该类的bindProperty()用来将属性绑定到变量上bindSetter()方法可以定制的方式实现绑定•1.使用bindProperty()方法•2.bindSetter()方法17.2.4 多个源属性到目标属性的绑定•
同样,数据模型也可以保存来自服务器处理完成的数据从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专门提供了了
数据的正确性涉及数据的格式、类型、数值等本节主要介绍Flex数据验证机制,主要包括:数据验证器的创建、数据验证的触发、错误提示和预定义标准验证器17.4.1 使用标准数据验证器•在Flex中,为了更加方便的进行数据验证对于常用数据,提供了的预定义数据验证器,主要包括以下几类•CurrencyValidator:货币数据验证•CreditCardValidator:信用卡数据验证•DateValidator:日期数据验证•NumberValidator :数字验证•PhoneNumberValidator:号码验证•EmailValidator:邮箱地址验证•ZipCodeValidator :邮政区号验证17.4.2 创建数据验证器•Flex中数据验证是由验证器(Validator)来执行的验证器的创建使用
这样,用户可以在需要验证时,随时触发验证最常用的触发方式是使用按钮当单击某个按钮后,对数据进行验证•在验证器定义过程中,可以通过以下两个属性定义验证的触发:•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标签是
•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数据服务提供一系列强大的服务器端数据管理功能,使开发人员能够快速数据密集型Flex应用程序•Flex数据服务部署为标准Web J2EE 应用程序,通过为现有的服务器端数据和业务逻辑提供高性能数据连接,增强了客户端Flex框架。
•Flex数据服务基于强大的消息体系结构,它与现有的基于标准的中间设备相集成,提供客户和服务器之间的数据自动同步服务,增加对实时数据推送和发布/订阅消息的支持,并实现应用程序的协作和偶尔连接17.6.2 数据服务的组成与部署•数据服务主要由三部分组成:数据管理服务,消息服务以及RPC服务,如图所示•1.数据管理服务•消息服务•服务•4.开发部署。
