在開發flex的過程中,經常會出現要驗證文字框輸入字元是否有效的問題,比如說如果輸入的為空值,或者輸入為非數字值,或者沒有滿足正規表示式型別。如果使用flex validator驗證器的話,可以很好的在前端驗證一些欄位的業務邏輯。下面我將通過一些簡單的例子,說明flex驗證框架在專案中應用的場景。
1.沒有使用flex驗證器的場景
比如我們在判斷該字元非空,且為數字型別,我們可以寫入如下as**片斷:
//使用正規表示式判斷是否為數字,且非空值public function isnumric(value:string):boolean
要呼叫它的時候寫入:
var data:string = this.agetxt.text;if(!isnumric(data))
注意:這樣寫簡單的驗證判斷還有,如果還要判斷它的允許的最大值(maxvalue)和最小值(minvalue),我們還在as指令碼中寫入邏輯判斷,而且如果要判斷的文字框比較多的情況下,會還有非常多的邏輯判斷,所以接下來我們引入flex validator驗證器。
2.應用系統自帶的驗證器
系統自帶的驗證器使用比較簡單,只要在flex中的< fx: declarations>< / fx: declarations>中引入即可(以下我使用的開發環境為flex 4.0及以上版本),針對上面寫的邏輯判斷,我寫入如下驗證器:
如果我們還可以寫上maxvalue和minvalue.
如下所示:
這樣寫在標籤中引入即可,我們還可以寫入浮點型的,如下所示:
注意:
這樣寫相比用as語句指令碼寫的優勢在於可以不斷擴充套件其邏輯判斷,而且還支援不斷的復用。等等 ,甚至不用寫一條判斷語句,不過一般情況下,我們還會寫入邏輯判斷.如下所示:
//批量表單字段校驗var validateresult:array=validator.validateall([
v_prevpowera,
v_prevcounta
]);//若校驗通過
if (validateresult.length==0)
}
驗證通過了,即可進行你要做的操作,比如一些常見的curd(四大操作)都可以。
3.應用自定義驗證器的場景
有時候一些比較複雜的邏輯判斷,比如**號碼,固定**,郵箱,特別是固定**,因為我們中國的一些地方和美國的一些地方的**號碼的形式不盡相同,這種情況下就不可以使用flex系統自帶的驗證器了,下面我舉些例子,說明如何程式設計實現自定義驗證器。
officephonevalidator.as(actionscript 驗證器),如下所示:
package cn.ac.iscas.gz.sems.util-\d$/ ;
protected static const tm:regexp = /^\d-\d$/;
private var _invalidformat:string = "固定**號格式錯誤";
//會被外面的覆蓋
//使用getter/setter方法
public function set invalidformat(value:string):void
public function get invalidformat():string
public function officephonevalidator()
/**
* 檢視手機號是否是 cm,cu,ct的
* */
private static function matchphone(value:string):boolean
/*** 驗證cn的手機號
* */
public static function validatephonenumbercn(validator:officephonevalidator,
value:object,
basefield:string):array
return results;
}/**
* 覆蓋validator的驗證方法
* */
override protected function dovalidation(value:object):array
}}
定義好了驗證器,下面我們要應用這個驗證器,在*.mxml做如下程式設計。
高亮顯示即為驗證器包所在位置.
然後跟系統自帶的驗證器使用一致,如下所示:
最後做邏輯判斷,驗證通過再下接下來的操作。
//批量表單字段校驗var validateresult:array=validator.validateall([
v_phone,
v_email,
v_offcephone,
v_fullname
]);//若校驗通過
if (!validateresult.length==0)
4.總結
flex驗證框架適合做一些複雜的邏輯判斷,比如正規表示式判斷,還有它支援復用,可以在專案工程中多次地方使用,只要按上面那樣引入包即可,這樣就不必要再程式設計了,
「基於不重用使用的輪子」
,「我在車輪上拍死乙隻蒼蠅」。
(完,待續.........)
javaWeb常用框架技術總結
struts2 為什麼每次請求都要建立乙個action物件?strust2的action裡面很多情況下都是需要定義成員變數用來接收表單上的值,如果只是乙個物件的話,那麼很可能會出現多個執行緒共用乙個成員變數 出現執行緒安全問題,因此struts2每次請求都要建立乙個action物件.modeldri...
Flex框架介紹
flex框架介紹 2011年01月13日 相當於flex下的spring框架,提供了ioc功能。但時間比較晚,我覺得應該還沒有spring其他強大的功能 inversion of control dependency injection 反轉控制 依賴注入 event handing and med...
Flex框架介紹
flex框架介紹 2011年01月13日 相當於flex下的spring框架,提供了ioc功能。但時間比較晚,我覺得應該還沒有spring其他強大的功能 inversion of control dependency injection 反轉控制 依賴注入 event handing and med...