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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論