<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 云自無心水自閑 閱讀(1827) 評論(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對象)?
    主站蜘蛛池模板: 猫咪免费人成网站在线观看入口| 久久久久亚洲av无码专区| 亚洲日韩精品国产一区二区三区| 中文字幕免费观看| 久久综合亚洲色一区二区三区| 久久久久免费精品国产| 内射少妇36P亚洲区| 18以下岁毛片在免费播放| 亚洲国产成人va在线观看网址| 免费不卡视频一卡二卡| 亚洲色偷偷偷综合网| 午夜视频在线观看免费完整版| 亚洲成a人片在线不卡一二三区| 欧洲美熟女乱又伦免费视频| 美女18毛片免费视频| 亚洲区日韩区无码区| 久久久免费的精品| 亚洲日本乱码一区二区在线二产线| 国产精品成人观看视频免费| 亚洲中文无码mv| 亚洲?v无码国产在丝袜线观看| 成人免费乱码大片A毛片 | 日本黄页网站免费| 日韩大片免费观看视频播放| 亚洲日本va在线视频观看| 老汉精品免费AV在线播放| 国产成人亚洲综合网站不卡| 四虎影视在线永久免费看黄| a毛看片免费观看视频| 亚洲四虎永久在线播放| 色婷婷7777免费视频在线观看| 国产精品亚洲AV三区| 国产亚洲美女精品久久久久狼| 亚洲免费电影网站| 又粗又长又爽又长黄免费视频| 亚洲性天天干天天摸| 成人永久免费高清| 无码A级毛片免费视频内谢| 亚洲精品无码一区二区 | 亚洲一级大黄大色毛片| 亚洲AV无码之日韩精品|