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

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

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

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創(chuàng)作品(標(biāo)有[原]字樣)轉(zhuǎn)載時(shí)請注明出處,謝謝。

    常用鏈接

    常用設(shè)置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155602
    • 排名 - 391

    最新評(píng)論

    [標(biāo)題]:[原]Struts2校驗(yàn)框架
    [時(shí)間]:2009-7-27
    [摘要]:校驗(yàn)框架配置、客戶端校驗(yàn)
    [關(guān)鍵字]:浪曦視頻,Struts2應(yīng)用開發(fā)系列,WebWork,Apache,validation
    [環(huán)境]:struts-2.1.6、JDK6、MyEclipse7、Tomcat6
    [作者]:Winty (wintys@gmail.com) http://www.tkk7.com/wintys

    [正文]:
        Struts校驗(yàn)框架提供了一種不用編寫代碼,只需修改配置文件即可對輸入進(jìn)行校驗(yàn)的功能。代碼方式校驗(yàn),即重寫validate()方法。實(shí)際應(yīng)用中,validate()與校驗(yàn)框架一般只選其一。

    1、校驗(yàn)框架配置
        在RegisterAction.java相同目錄新建校驗(yàn)框架配置文件RegisterAction-validation.xml。RegisterAction-validation.xml的DTD可以復(fù)制struts自帶的示例struts2-mailreader-2.1.6中的DTD:
    <!DOCTYPE validators PUBLIC
              "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
              "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

    xwork-validator-1.0.2.dtd:
    <?xml version="1.0" encoding="UTF-8"?>

    <!--
      XWork Validators DTD.
      Used the following DOCTYPE.
     
      <!DOCTYPE validators PUBLIC
              "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
              "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
    -->


    <!ELEMENT validators (field|validator)+>

    <!ELEMENT field (field-validator+)>
    <!ATTLIST field
        name CDATA #REQUIRED
    >

    <!ELEMENT field-validator (param*, message)>
    <!ATTLIST field-validator
        type CDATA #REQUIRED
        short-circuit (true|false) "false"
    >

    <!ELEMENT validator (param*, message)>
    <!ATTLIST validator
        type CDATA #REQUIRED
        short-circuit (true|false) "false"
    >

    <!ELEMENT param (#PCDATA)>
    <!ATTLIST param
        name CDATA #REQUIRED
    >

    <!ELEMENT message (#PCDATA)>
    <!ATTLIST message
        key CDATA #IMPLIED
    >


    RegisterAction-validation.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC
              "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
              "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
     
     <validators>
     <!--  
         與field等價(jià)的validator
         <validator type="requiredstring">
             <param name="fieldName">name</param>
             <param name="trim">true</param>
             <message>name required</message>
         </validator>
         <validator type="stringlength">
             <param name="fieldName">name</param>
                 <param name="trim">true</param>
                 <param name="minLength">6</param>
                 <param name="maxLength">10</param>
                 <message>name length range : ${minLength} ~ ${maxLength}</message>
         </validator>
     -->    
         <field name="name">
             <field-validator type="requiredstring" >
                 <param name="trim">true</param>
                 <message>name required</message>
             </field-validator>
             <field-validator type="stringlength">
                 <param name="trim">true</param>
                 <param name="minLength">6</param>
                 <param name="maxLength">10</param>
                 <message>name length range : ${minLength} ~ ${maxLength}</message>
             </field-validator>
         </field>
         
         <field name="age">
             <field-validator type="conversion" short-circuit="true">
                 <message>the field age conversion error</message>
             </field-validator>
             <field-validator type="int">
                 <param name="min">1</param>
                 <param name="max">150</param>
                 <message>age range: ${min} ~ ${max}</message>
             </field-validator>
         </field>
         
         <field name="birthday">
             <field-validator type="required">
                 <message>birthday required</message>
             </field-validator>
             <field-validator type="date">
                 <param name="min">2009-01-01</param>
                 <param name="max">2009-12-31</param>
                 <message>birthday range: ${min} ~ ${max}</message>
             </field-validator>
         </field>
         
         <field name="email">
             <field-validator type="email">
                 <message>invalid email address</message>
             </field-validator>
         </field>
     </validators>

    說明:
    a.校驗(yàn)框架有兩種校驗(yàn)方式:field和validator。
    field校驗(yàn):先指定需要校驗(yàn)的屬性,再指定校驗(yàn)方式。validator校驗(yàn):先指定校驗(yàn)方式,再指定需要校驗(yàn)的屬性。兩種方式是等價(jià)的。

    field校驗(yàn):
    <field name="name">
        <field-validator type="requiredstring" >
            <param name="trim">true</param>
            <message>name required</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="trim">true</param>
            <param name="minLength">6</param>
            <param name="maxLength">10</param>
            <message>name length range : ${minLength} ~ ${maxLength}</message>
        </field-validator>
    </field>

    validator校驗(yàn):
    <validator type="requiredstring">
        <param name="fieldName">name</param>
        <param name="trim">true</param>
        <message>name required</message>
    </validator>
    <validator type="stringlength">
        <param name="fieldName">name</param>
        <param name="trim">true</param>
        <param name="minLength">6</param>
        <param name="maxLength">10</param>
        <message>name length range : ${minLength} ~ ${maxLength}</message>
    </validator>

    b.<field-validator type="requiredstring" >中的type及其對應(yīng)的xwork類可以在xwork-2.1.2.jar/com.opensymphony.xwork2.validator.validators/default.xml中查找到。
    default.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC
            "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
            "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">

    <!-- START SNIPPET: validators-default -->
    <validators>
        <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
        <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
        <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
        <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
        <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
        <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
        <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
        <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
        <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
        <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
        <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
        <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
        <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
        <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
        <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
        <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
    </validators>
    <!--  END SNIPPET: validators-default -->

    c. 對于校驗(yàn)<field-validator type="requiredstring" >:String用requiredstring,其它類型用required。
    d. 驗(yàn)證錯(cuò)誤將默認(rèn)產(chǎn)生FieldError。
    e. short-circuit="true" : 一個(gè)校驗(yàn)失敗,是否是繼續(xù)執(zhí)行后續(xù)校驗(yàn)。
    f. 對于相同屬性的FieldError,validate()方法中的驗(yàn)證和RegisterAction-validation.xml中的驗(yàn)證都會(huì)執(zhí)行,并且FieldError都會(huì)顯示。
    執(zhí)行順序: RegisterAction-validation.xml => validate()。


    2、特定于業(yè)務(wù)邏輯的局部校驗(yàn):
    對于struts.xml中<action>的method="register"指定的業(yè)務(wù)方法register(),使用校驗(yàn)RegisterAction-register-validation.xml(與RegisterAction.java在同一目錄下)。同時(shí),RegisterAction-validation.xml會(huì)被執(zhí)行。執(zhí)行順序:  RegisterAction-validation.xml => RegisterAction-register-validation.xml

    3、Struts2客戶端校驗(yàn)
        設(shè)置struts標(biāo)簽<s:form>中validate="true"。這樣就會(huì)根據(jù)RegisterAction-validation.xml生成頁面Javascript,在客戶端執(zhí)行校驗(yàn)。
     
     注意:
     a.struts標(biāo)簽不能使用simple主題。
     b.Struts2客戶端校驗(yàn)功能較弱,一般不用。

    4、FieldError和ActionError的實(shí)現(xiàn)
    a.真正存放field級(jí)別錯(cuò)誤信息的對象是LinkedHashMap。
    b.該LinkedHashMap的key是String類型的,value是ArrayList類型,所以同一個(gè)key可以對應(yīng)多個(gè)錯(cuò)誤消息。
    c.對于Action級(jí)別的錯(cuò)誤信息,實(shí)際上是放置在ArrayList中的。
        
    [參考資料]:
        《浪曦視頻之Struts2應(yīng)用開發(fā)系列》

    [附件]:
        源代碼 : http://www.tkk7.com/Files/wintys/struts_ValidationFramework.zip
    posted on 2009-07-27 23:54 天堂露珠 閱讀(629) 評(píng)論(0)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 免费大片av手机看片| 亚洲熟妇AV一区二区三区宅男| 国产精品亚洲一区二区三区在线观看 | 足恋玩丝袜脚视频免费网站| 久久香蕉国产线看观看亚洲片| 免费无码又爽又刺激一高潮| 亚洲精品国产精品乱码在线观看| 91福利免费网站在线观看| 国产亚洲欧洲精品| 性xxxxx大片免费视频| 综合自拍亚洲综合图不卡区| 亚洲网站在线免费观看| 亚洲一区二区三区深夜天堂| 免费看韩国黄a片在线观看| 亚洲欧美综合精品成人导航| 四虎影视免费永久在线观看| 日本在线观看免费高清| 国产成人A人亚洲精品无码| 99在线观看精品免费99| 亚洲人成在线中文字幕| 国产成人3p视频免费观看| 国产99久久久国产精免费| 久久亚洲sm情趣捆绑调教| 在线观看成人免费视频| 一级特级aaaa毛片免费观看 | 亚洲国产综合自在线另类| 成年轻人网站色免费看| 日本永久免费a∨在线视频| 亚洲国产精品无码专区影院 | 亚洲国产精品无码久久九九| 中国videos性高清免费| 亚洲精品91在线| 亚洲福利中文字幕在线网址| 久久国产精品一区免费下载| 亚洲国产熟亚洲女视频| 亚洲精品人成无码中文毛片| 最近新韩国日本免费观看| 精品视频免费在线| 亚洲精品线在线观看| 四虎影院免费在线播放| 不卡视频免费在线观看|