<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Flex2.0中使用Validator

    Posted on 2006-04-14 11:14 云自無心水自閑 閱讀(1832) 評論(1)  編輯  收藏 所屬分類: FlexFlex2
    在Flex2.0中, Validator組件的使用方式和1.5中相比, 進行了一些改變, 不再需要定義Model, 可以在Validator屬性中直接引用Form成員了.
    ????<mx:Form?id="loginForm">
    ????????
    <mx:Text?text="?{AtsModelLocator.getInstance().loginFailMessage?}"?width="80%"?color="red"/>
    ????
    ????????
    <mx:FormItem?label="Username:?"?required="true">
    ????????????
    <mx:TextInput?id="username"?/>
    ????????
    </mx:FormItem>

    ????????
    <mx:FormItem?label="Password:?"?required="true">
    ????????????
    <mx:TextInput?id="password"?/>
    ????????
    </mx:FormItem>
    ????
    </mx:Form>


    ????
    <mx:ControlBar>
    ????????
    <mx:Button?id="loginSubmit"?label="Login"?mouseUp="loginUser()"/>
    ????
    </mx:ControlBar>
    ????
    ????
    <mx:StringValidator?id="userNameValidator"?source="{username}"?property="text"
    ????????tooShortError
    ="This?string?is?shorter?than?the?minimum?allowed?length?of?3.?"?
    ????????tooLongError
    ="This?string?is?longer?than?the?maximum?allowed?length?of?20."?
    ????????minLength
    ="4"?maxLength="20"/>

    ????
    <mx:StringValidator?id="userPassValidator"?source="{password}"?property="text"
    ????????tooShortError
    ="This?string?is?shorter?than?the?minimum?allowed?length?of?6.?"?
    ????????tooLongError
    ="This?string?is?longer?than?the?maximum?allowed?length?of?10."?
    ????????minLength
    ="4"?maxLength="20"/>

    這樣就定義好了兩個Validator, 可以對用戶名和用戶密碼進行校驗.
    但是怎么使用這兩個Validator呢?

    我是這樣用的:
    ????<mx:Script>
    ????
    <![CDATA[
    ????????import?mx.controls.Alert;
    ????????import?mx.events.ValidationResultEvent;
    ????????import?mx.validators.ValidationResult;??
    ????????????
    ???????import?com.ats.vo.LoginVO;
    ???????import?com.ats.control.LoginEvent;
    ???????
    ???????import?mx.validators;
    ???????
    ???????public?
    function?loginUser()?:?void
    ???????{
    ??????????
    if?(?!?modelCheckValid?)?{
    ??????????????modelCheckValid?
    =?true;
    ??????????????
    return;
    ??????????}
    ???????????
    ??????????
    var?loginVO?:?LoginVO?=?new?LoginVO();
    ??????????loginVO.username?
    =?username.text;
    ??????????loginVO.password?
    =?password.text;
    ????????????
    ????????????
    var?event?:?LoginEvent?=?new?LoginEvent(?loginVO?);
    ????????????dispatchEvent(?event?);
    ???????}
    ???????
    ???????private?
    var?modelCheckValid?:?Boolean?=?true;
    ????]]
    >
    ????
    </mx:Script>

    ????
    <mx:Form?id="loginForm">
    ????????
    <mx:Text?text="?{AtsModelLocator.getInstance().loginFailMessage?}"?width="80%"?color="red"/>
    ????
    ????????
    <mx:FormItem?label="Username:?"?required="true">
    ????????????
    <mx:TextInput?id="username"?/>
    ????????
    </mx:FormItem>

    ????????
    <mx:FormItem?label="Password:?"?required="true">
    ????????????
    <mx:TextInput?id="password"?/>
    ????????
    </mx:FormItem>
    ????
    </mx:Form>


    ????
    <mx:ControlBar>
    ????????
    <mx:Button?id="loginSubmit"?label="Login"?mouseUp="loginUser()"/>
    ????
    </mx:ControlBar>
    ????
    ????
    <mx:StringValidator?id="userNameValidator"?source="{username}"?property="text"
    ????????tooShortError
    ="This?string?is?shorter?than?the?minimum?allowed?length?of?3.?"?
    ????????tooLongError
    ="This?string?is?longer?than?the?maximum?allowed?length?of?20."?
    ????????minLength
    ="4"?maxLength="20"
    ????????invalid
    ="modelCheckValid=false"
    ????????trigger
    ="{loginSubmit}"
    ????????triggerEvent
    ="mouseDown"/>

    ????
    <mx:StringValidator?id="userPassValidator"?source="{password}"?property="text"
    ????????tooShortError
    ="This?string?is?shorter?than?the?minimum?allowed?length?of?6.?"?
    ????????tooLongError
    ="This?string?is?longer?than?the?maximum?allowed?length?of?10."?
    ????????minLength
    ="4"?maxLength="20"
    ????????invalid
    ="modelCheckValid=false"
    ????????trigger
    ="{loginSubmit}"
    ????????triggerEvent
    ="mouseDown"/>



    為什么這么復雜地在Validator中定義trigger, triggerEvent呢?
    原因是這樣的: 如果不是在Validator的invalid事件中去設置modelCheckValid這個標志量.
    就需要在loginUser()函數中對所有Validator進行判斷, 代碼會顯得比較臃腫復雜.
    而且如果需要考慮是否需要一次性顯示出所有校驗失敗的錯誤.
    代碼示例:
    ????<mx:Script>
    ????
    <![CDATA[
    ????????import?mx.controls.Alert;
    ????????import?mx.events.ValidationResultEvent;
    ????????import?mx.validators.ValidationResult;??
    ????????????
    ???????import?com.ats.vo.LoginVO;
    ???????import?com.ats.control.LoginEvent;
    ???????
    ???????import?mx.validators;
    ???????
    ???????public?
    function?loginUser()?:?void
    ???????{
    ???????
    ??????????
    var?vrEvent?:?ValidateResultEvent;
    ??????????
    ??????????
    var?checkFailed?:?Boolean?=?false;
    ??????????
    ??????????vrEvent?
    =?userNameValidator.validate();
    ??????????
    if?(?vrEvent.results?!=?null?&&?vrEvent.results.length?>?0?)?{
    ??????????????
    //?驗證失敗
    ??????????????checkFailed?=?true;
    ??????????}
    ??????????
    ??????????vrEvent?
    =?userPassValidator.validate();
    ??????????
    if?(?vrEvent.results?!=?null?&&?vrEvent.results.length?>?0?)?{
    ??????????????
    //?驗證失敗
    ??????????????checkFailed?=?true;
    ??????????}
    ??????????
    ??????????
    if?(?checkFailed?)?return;
    ???????????
    ??????????
    var?loginVO?:?LoginVO?=?new?LoginVO();
    ??????????loginVO.username?
    =?username.text;
    ??????????loginVO.password?
    =?password.text;
    ????????????
    ????????????
    var?event?:?LoginEvent?=?new?LoginEvent(?loginVO?);
    ????????????dispatchEvent(?event?);
    ???????}
    ???????
    ????]]
    >
    ????
    </mx:Script>

    ????
    <mx:Form?id="loginForm">
    ????????
    <mx:Text?text="?{AtsModelLocator.getInstance().loginFailMessage?}"?width="80%"?color="red"/>
    ????
    ????????
    <mx:FormItem?label="Username:?"?required="true">
    ????????????
    <mx:TextInput?id="username"?/>
    ????????
    </mx:FormItem>

    ????????
    <mx:FormItem?label="Password:?"?required="true">
    ????????????
    <mx:TextInput?id="password"?/>
    ????????
    </mx:FormItem>
    ????
    </mx:Form>


    ????
    <mx:ControlBar>
    ????????
    <mx:Button?id="loginSubmit"?label="Login"?mouseUp="loginUser()"/>
    ????
    </mx:ControlBar>
    ????
    ????
    <mx:StringValidator?id="userNameValidator"?source="{username}"?property="text"
    ????????tooShortError
    ="This?string?is?shorter?than?the?minimum?allowed?length?of?3.?"?
    ????????tooLongError
    ="This?string?is?longer?than?the?maximum?allowed?length?of?20."?
    ????????minLength
    ="4"?maxLength="20"/>

    ????
    <mx:StringValidator?id="userPassValidator"?source="{password}"?property="text"
    ????????tooShortError
    ="This?string?is?shorter?than?the?minimum?allowed?length?of?6.?"?
    ????????tooLongError
    ="This?string?is?longer?than?the?maximum?allowed?length?of?10."?
    ????????minLength
    ="4"?maxLength="20"/>

    這種方法也是可行的.
    至于具體使用哪一個, 憑自己的喜好了.



    評論

    # re: Flex2.0中使用Validator  回復  更多評論   

    2007-09-27 09:45 by tiangej
    《目的》:
    畫面項目"用戶id"必須是英文數字,且長度在4--20之間。
    于是我計劃用 mx:StringValidator(字符串驗證) 和 mx:RegExpValidator(正則驗證)同時作用于上述的項目上。

    《結果》:
    只有最后定義的驗證項發揮作用。

    《問題》:
    是否能夠對同一輸入項目進行兩種以上的數據校驗(用Validator對象)?
    主站蜘蛛池模板: 7m凹凸精品分类大全免费| 黄色免费在线观看网址| 99久久免费观看| 亚洲丝袜美腿视频| 亚洲人成无码网WWW| 爱情岛论坛亚洲品质自拍视频网站 | 亚洲黄色在线电影| 美女被爆羞羞网站免费| 国产小视频免费观看| 亚洲色图.com| 国产精品爱啪在线线免费观看| 亚洲中文字幕无码日韩| 中文在线观看永久免费| 国产成人精品123区免费视频| 亚洲欧美日韩中文字幕一区二区三区| 桃子视频在线观看高清免费视频| 久久久久亚洲Av片无码v| 97在线视频免费| 亚洲精品国产精品国自产网站| 免费观看的毛片大全| 337p欧洲亚洲大胆艺术| 无码av免费毛片一区二区| 亚洲高清毛片一区二区| 国拍在线精品视频免费观看 | 亚洲an天堂an在线观看| xxxxwww免费| 亚洲网站在线观看| 国拍在线精品视频免费观看| 边摸边吃奶边做爽免费视频99| 中文字幕不卡亚洲| 国产免费一区二区三区| 精品久久久久亚洲| 久久亚洲国产午夜精品理论片| 一级做性色a爰片久久毛片免费| 暖暖免费高清日本中文| 亚洲免费日韩无码系列| 老司机亚洲精品影视www| 免费无码一区二区三区| 亚洲AV成人精品一区二区三区| 国产亚洲综合久久系列| 一级女人18毛片免费|