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