數據處理和數據服務_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第17章 數據處理和數據服務,從本章開始學習如何在Flex應用中操縱數據。Flex 2在先前的版本基礎上加強了客戶端的數據功能,同時在Flex的產品線中加入了Flex Data Service 2,使Flex應用更方便的與服務器端進行數據交互。本章主要介紹Flex中數據的相關特性,簡要的介紹Flex數據服務。,17.1 Flex中的數據處理,在Flex應用開發(fā)過程中,數據是不可缺少的一部分。獲取服務器端數據,并對數據進行操作,成為開

2、發(fā)應用過程非常重要的部分。本節(jié)主要介紹Flex中數據處理的關鍵步驟,包含綁定數據(Binding Data)、存儲數據(Storing Data)、驗證數據(Validating Data)和格式化數據(Formatting Data)。數據在用戶與應用交互中是無處不在的。從用戶在應用界面輸入數據,請求返回信息,到服務器端返回數據并在見面上顯示數據,經歷了數個數據處理階段,如圖所示。,17.2 綁定數據,“綁定”是非常形象的概念。例

3、如把網上銀行帳戶和你的信用卡帳戶綁定,網上購物消費后,信用卡帳號的余額也會發(fā)生改變。而對于數據,綁定是在不同的對象之間進行數據的捆綁過程,當其中一個對象改變了,另一個對象也發(fā)生改變。綁定為應用的數據傳遞提供了一種便捷的方式。這里的對象通常指Flex組件的屬性,例如文本控件的text屬性,數據類組件的dataProvider屬性等。通常,一個數據綁定由三部分構成,包括綁定源、綁定目標和觸發(fā)事件。當事件被觸發(fā)后,綁定發(fā)生,完成從綁定源到綁

4、定目標的數據拷貝。Flex 2中提供了三種數據綁定的方法:“{}”語法、MXML的標簽和ActionScript中的BindingUtils方法。下面分別介紹這3種方法。,17.2.1 使用“{}”進行數據綁定,在使用“{}”進行綁定時,綁定源可以是控件屬性、ActionScript表達式、ActionScript函數。使用“{}”語法進行數據綁定是最簡單的數據綁定方式。使用該方法時,{}將綁定的源屬性括起來,作為目標屬性的值,具

5、體形式如下。目標屬性的值={源屬性};,17.2.2 使用標簽進行數據綁定,在Flex應用中,還可以使用標簽取代“{}”進行數據綁定。當使用標簽時,需要提供為標簽提供源屬性和目標屬性,這和使用“{}”是一致的。標簽定義數據綁定的一般格式如下:,17.2.3 使用ActionScript定義綁定,前面使用“{}”或者標簽定義數據綁定,都是在MXML中進行。Flex還支持在ActionScript中使用mx.binding.uti

6、ls.BindingUtils類來定義數據綁定。該類的bindProperty()用來將屬性綁定到變量上。bindSetter()方法可以定制的方式實現綁定。1.使用bindProperty()方法2.bindSetter()方法,17.2.4 多個源屬性到目標屬性的綁定,標簽可以實現多個不同的源屬性到相同的目標屬性的綁定。這是通過多個具有相同目的屬性的綁定標簽來完成的。但也可以與“{}”組合定義使用。下面的例子使用用多個源屬性

7、的綁定,一個采用標簽,一個采用“{}”,如圖所示。,17.2.5 源屬性到多個目標屬性的綁定,同樣,同一個源屬性可以綁定到多個不同的目標屬性上。在接下來的這個例子中,文本輸入控件的text屬性綁定到兩個數據模型上,這兩個數據模型有分別對應兩個標簽控件的text屬性,如圖所示。,17.3 存儲數據,Flex中存儲數據主要依靠數據模型來實現??梢愿鶕玫男枰?,在數據模型中定義相應的屬性用來保存應用數據。數據模型廣泛的用于Flex前臺

8、界面和后臺服務器之間交互。用戶界面的數據在發(fā)送到服務器端處理之前,被保存在數據模型中。同樣,數據模型也可以保存來自服務器處理完成的數據。從MVC設計模式的角度來看,數據模型位于模型層面,起到承上啟下的作用。數據模型模型的引入,使得數據的驗證和格式化都變得容易。同時數據模型的定義可以包含客戶端的業(yè)務邏輯,通過不同數據的組合,大大增強了數據的內聚性。本節(jié)主要介紹數據模型的定義、驗證和使用。,17.3.1 數據模型定義,數據模型是Act

9、ionScript對象。數據模型的定義有兩種方法:MXML標簽、ActionScript函數或者ActionScript類。通常是根據實際情況,決定使用哪種方法。對于簡單的數據結構使用MXML來定義,而ActionScript函數或者ActionScript類方法一般用來定義復雜的數據結構和客戶端業(yè)務邏輯。1.使用MXML標簽2.使用ActionScript函數和ActionScript類,17.3.2 數據模型的驗證,數據模型的

10、驗證是對數據模型中保存的數據的正確性進行檢驗。在Flex中,數據模型的驗證使用數據驗證器(Data Validator)。在下面的例子中,對student數據模型中不同的數據定義了不同的驗證器,,17.3.3 數據模型作為值對象,數據模型作為值對象,是指將數據模型中保存的數據值,以對象的方式,在控件之間傳遞。通常用在遠程服務調用返回時,將結果中一系列數據或者多個對象數據保存在某個數據模型中。該模型作為值對象在遠程服務和數據控件之間傳

11、遞數據。這樣會使得在Flex應用中管理和處理數據變得簡單。在下面的例子中,bookDM存儲了遠程服務操作的結果。bookInfo組件是一個自定義組件,從bookDM模型獲取數據并顯示當前選擇圖書的詳細信息。,17.3.4 XML數據模型,XML數據模型是指數據模型中保存的是XML數據,對其處理遵循XML標準。在使用數據模型時,有時會涉及XML數據。為此Flex專門提供了了標簽,用于定義XML數據模型。該數據模型在與不同之處,主要在

12、于編譯時會被編譯為ActionScript的xml.XMLNode的數據或者是XML對象。在中可以使用“{}”進行數據綁定。使用時,可以把該標簽下的內容看作一個XML文檔。如果將的source屬性設為E4X,就可以使用強大的E4X處理XML。這里需要注意的是,在當前Flex版本不能內的節(jié)點值作為綁定源。,17.4 驗證數據,數據驗證是Flex中的數據進行正確性驗證。數據的正確性涉及數據的格式、類型、數值等。本節(jié)主要介紹Flex數據驗

13、證機制,主要包括:數據驗證器的創(chuàng)建、數據驗證的觸發(fā)、錯誤提示和預定義標準驗證器。,17.4.1 使用標準數據驗證器,在Flex中,為了更加方便的進行數據驗證。對于常用數據,提供了的預定義數據驗證器,主要包括以下幾類。CurrencyValidator:貨幣數據驗證。CreditCardValidator:信用卡數據驗證。DateValidator:日期數據驗證。NumberValidator :數字驗證。PhoneNumbe

14、rValidator:電話號碼驗證。EmailValidator:郵箱地址驗證。ZipCodeValidator :郵政區(qū)號驗證。,17.4.2 創(chuàng)建數據驗證器,Flex中數據驗證是由驗證器(Validator)來執(zhí)行的。驗證器的創(chuàng)建使用標簽或者指定驗證器的標簽,還可以使用驗證器對應的類在ActionScript中創(chuàng)建。下面以為介紹創(chuàng)建過程。1.使用MXML標簽2.在ActionScript中創(chuàng)建,17.4.3 觸發(fā)驗證器,

15、在Flex應用中,數據驗證是可以被在事件發(fā)生時觸發(fā)。這樣,用戶可以在需要驗證時,隨時觸發(fā)驗證。最常用的觸發(fā)方式是使用按鈕。當單擊某個按鈕后,對數據進行驗證。在驗證器定義過程中,可以通過以下兩個屬性定義驗證的觸發(fā):trigger:表示觸發(fā)驗證的對象(通常是按鈕)。例如:trigger="{button}";。triggerEvent:表示對象觸發(fā)驗證事件類型(如鼠標單擊,鼠標滑入滑出等)。例如:triggerEv

16、ent="click"。,17.4.4 驗證錯誤提示,驗證錯誤提示是當數據驗證發(fā)生錯誤時,用戶界面上顯示的與錯誤有關的信息。如前面示例中,日期格式不正確的顯示的錯誤提示。驗證控件在默認情況下已經顯示默認的提示錯誤,但提示的語言使用的都是英文。為了從更加貼合應用的實際,可以使用不同的屬性定義提示信息。在下面的例子中,對電話號碼的驗證器,定義了不同的提示信息。用戶單擊驗證按鈕,觸發(fā)對輸入電話號碼的驗證。在不同錯誤下,

17、驗證提示信息如圖所示。,17.5 格式化數據,格式化數據是對數據進行的處理,按照某種約定的格式以統一的形式輸出。在Flex中數據的格式化是由格式器(formatter)完成的。格式器是一個可配置的對象,用來將原始數據格式化為定制數據。通常數據的格式是從顯示的角度對綁定到組件上的數據進行的,主要是減少人工處理的工作量,提高數據操作的效率。本節(jié)主要講述如何使用數據格式器,包括格式器的創(chuàng)建、觸發(fā)、錯誤的處理和常用的格式器。,17.5.1

18、使用標準的格式器,在Flex中,為了更加方便的進行數據格式化。對于常用數據,提供了的標準的數據格式器,主要包括以下幾類。CurrencyFormatter:貨幣數據格式化。DateFormatter:日期數據格式化。NumberFormatter :數字格式化。PhoneFormatter:電話號碼格式化。ZipCodeFormatter :郵政區(qū)號格式化。在Flex應用中如果需要對上述數據進行格式化,只需使用相應的MXML

19、標簽或者ActionScript類即可。每類格式器的使用方法類似,這里只介紹通用格式化器的使用方法。,17.5.2 創(chuàng)建數據格式器,數據格式器將數據格式為字符串,實現原始數據到字符串的單向轉換。最典型的情況是在文本域中顯示數據之前觸發(fā)數據的格式化。創(chuàng)建格式器,使用的MXML標簽是或者指定格式化器的標簽。主要涉及如下的屬性和方法:formatString:定義數據的格式屬性。它是格式化的基礎。例如:formatString=&quo

20、t;YYYY-MM-DD",是將輸入的日期格式為年-月-日這樣的格式。format():格式化方法。該方法輸入是需要格式化的數據,輸出是格式字符串。當格式化發(fā)生錯誤時,返回空值,同時錯誤信息會寫入格式器的error屬性中。創(chuàng)建格式器的一般過程如下:(1)在MXML代碼中聲明一個格式器,給定合適的格式屬性。(2)使用{}對綁定數據調用格式器的format()方法,將要格式化的數據作為format()方法的參數。,17.5

21、.3 觸發(fā)格式器,格式器的觸發(fā)需要調用格式器的format()方法。在Flex應用中可以在任何地方調用format()方法。通常格式器的觸發(fā)是作為事件的響應,如按鈕的單擊事件。下面是一個通過按鈕事件觸發(fā)格式器的例子。創(chuàng)建了一個日期格式器。當用戶單擊格式化按鈕時,作為鼠標單擊事件的響應,格式器觸發(fā),對輸入的日期格式化并將格式數據顯示到TextInput控件,如圖所示。,17.5.4 錯誤處理,在格式化數據的過程可能會發(fā)生錯誤,錯誤處

22、理是用來將錯誤信息返回給調用者。錯誤處理涉及到格式器的error屬性。當發(fā)生格式錯誤時,錯誤描述信息寫入格式器的error屬性當中。通常,當發(fā)生格式錯誤時format()方法會返回空字符串,同時錯誤信息也會被記錄。所以當檢測到返回字符串為空時,可以訪問error屬性獲得錯誤原因。另外,用戶也可以使用ActionScript,編寫自定義的錯誤處理函數來處理格式化錯誤。下面的例子中定義了一個簡單的錯誤處理函數。,17.6 Flex數據

23、服務,Flex 2系列產品對開發(fā)者創(chuàng)建和管理面向服務的豐富因特網應用程序(RIAs)的方式做了幾個重要改進。其中數據服務從原有的功能中劃分出來,可以作為獨立的服務安裝。特別是數據服務中的新的性能,使得與服務器端的交互比以前任何版本都顯得方便。本節(jié)將簡要介紹Flex數據服務,詳細的內容在后面的章節(jié)重點介紹。,17.6.1 數據服務概述,在Flex 2中數據服務指的是Flex Data Services 2。它與早期的Flex數據管理相比

24、,向前跨了重大的一步,它提供一組基于信息的服務,具有支持同步數據的能力。這顯著的提升了開發(fā)者的生產率,不用花時間去編寫、調試和維護,往往容易出錯,并要求在客戶端、程序和數據庫不同層間移動數據的代碼上。Flex數據服務具有以下特點。Flex數據服務提供一系列強大的服務器端數據管理功能,使開發(fā)人員能夠快速數據密集型Flex應用程序。Flex數據服務部署為標準Web J2EE 應用程序,通過為現有的服務器端數據和業(yè)務邏輯提供高性能數據連

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論