<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://m.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://m.tkk7.com/Files/wintys/struts_ValidationFramework.zip
    posted on 2009-07-27 23:54 天堂露珠 閱讀(629) 評(píng)論(0)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 亚洲日韩AV一区二区三区中文 | 四虎影在线永久免费四虎地址8848aa| 四虎精品免费永久免费视频| 麻豆国产VA免费精品高清在线| 久久亚洲AV无码西西人体| 图图资源网亚洲综合网站| 亚洲午夜精品久久久久久app | 一级毛片a免费播放王色电影 | 久久99精品免费一区二区| 在线日韩日本国产亚洲| 日本免费电影一区二区| 成人永久免费高清| 老司机午夜免费视频| 国产精品亚洲二区在线观看 | a高清免费毛片久久| 亚洲人成网亚洲欧洲无码久久| 中文字幕久无码免费久久| 亚洲午夜免费视频| 免费看一级一级人妻片 | 国产一区二区三区亚洲综合| 99久久99久久精品免费看蜜桃| 色噜噜亚洲精品中文字幕| 久久精品免费观看国产| 亚洲av无码电影网| 亚洲成av人片天堂网老年人| 日韩国产精品亚洲а∨天堂免| 成年黄网站色大免费全看| 亚洲精品久久久久无码AV片软件| 美女网站免费福利视频| 久久精品国产亚洲AV大全| 成人免费无毒在线观看网站| 亚洲乱码一二三四五六区| 在线观看的免费网站无遮挡| 亚洲综合欧美色五月俺也去| 亚洲无码黄色网址| 在线观看免费视频资源| 亚洲福利视频一区二区三区| 国产精品久久香蕉免费播放| 最好免费观看高清在线| 亚洲一区二区三区成人网站| 亚洲精品tv久久久久久久久|