Phần 1 : FLEX
7.2. Chuẩn hóa và định dạng dữ liệu
Khi dữ liệu được người dùng nhập vào gọi là chuẩn hóa dữ liệu. Khi dữ liệu được hiển thị hoặc cần một dạng riêng trước khi được lưu trữ hay được gửi cho phương thức ở server thì gọi là định dạng dữ liệu.
7.2.1. Chuẩn hóa dữ liệu người dùng nhập vào
Flex framework có một thành phần gọi là validator để chuẩn hóa dữ liệu. Một số
loại chuẩn hóa dữ liệu cơ bản như: StringValidator, NumberValidator, DateValidator, PhoneValidator, và ZipCodeValidator…
7.2.1.1. Sử dụng thành phần validator
Cả MXML và ActionScript đều có khả năng làm viêc với validator.
7.2.1.1.1. Cú pháp trong MXML:
<mx:Validator source="{sourceObject}" property="sourceProperty" />
Hoặc
<mx:Validator source="{sourceObject}" property="sourceProperty" required="true" />
Ví dụ: …
<mx:Form>
<mx:FormHeading label="Sample Form"/> <mx:FormItem label="Name">
<mx:TextInput id="username"/> </mx:FormItem>
<mx:FormItem>
<mx:Button id="button" label="Submit"/> </mx:FormItem>
</mx:Form>
<mx:Validator source="{username}" property="text" /> …
Với ví dụ trên, validator sẽ chuẩn hóa là người dùng phải nhập ít nhất một ký tự. Validator chạy khi người dùng chuyển focus khỏi TextInput.
7.2.1.1.2. Cú pháp trong ActionScript
private var _validator:Validator; _validator = new Validator( ); _validator.source = sourceObject; _validator.property = "sourceProperty";
7.2.1.2. Xử lý sự kiện validator
Validator phát sinh hai sự kiện cơ bản là valid và invalid. Khi validator chạy thành cơng thì nó gửi sự kiện valid, ngược lại nó gửi sự kiện invalid. Theo mặc định thì sẽ
được nhận và xử lý tự động. Nhưng ta có thể xử lý hai sự kiện này theo hai cách
sau:
• Gán giá trị cho hai thuộc tính valid và invalid của thẻ MXML <mx:Validator source="{sourceObject}" property="sourceProperty"
valid="validHandler(event)" invalid="invalidHandler(event)" />
mx.events.ValidationResultEvent.VALID mx.events.ValidationResultEvent.INVALID
validator.addEventListener(ValidationResultEvent.VALID, validHandler); validator.addEventListener(ValidationResultEvent.INVALID, invalidHandler);
Sự kiện mặc định để phát sinh validator là valueComit. Tất cả các công cụ nhập dữ
liệu đều gửi sự kiện này đi khi giá trị thay đổi hoặc bị mất focus.
Mặc dù validator thường được dùng cho các công cụ nhập liệu (như là text input),
nhưng ta có thể dùng cho bất kỳ đối tượng hoặc thuộc tính nào. Nếu đối tượng ta
dùng không phát sinh sự kiên valueComit (như là button), ta có thể gọi validator bằng hai thuộc tính trigger và triggerEvent. Thuộc tính trigger tham chiếu đến đối tượng ta muốn dùng, triggerEvent là tên sự kiện ta muốn phát sinh validator.
Ví dụ:
<mx:Validator source="{username}" property="text" trigger="{button}" triggerEvent="click" />
7.2.2. Định dạng dữ liệu
Để định dạng dữ liệu ta có thể dùng Flex framework hoặc tự xây dựng phương thức để định dạng dữ liệu.
Để viết một phương thức định dạng dữ liệu ta phải viết một lớp kế thừa từ
mx.formatters.Formatter.
Hoặc ta có thể dùng MXML hoặc ActionScript để khởi tạo định dạng dữ liệu và
dùng phương thức format(). Phương thức này trả về một chuỗi đã định dạng. Một số loại định dạng dữ liệu đã được thiết lập sẵn như:
• NumberFormatter
• DateFormatter
• CurrencyFormatter