posts - 70,comments - 408,trackbacks - 0
           Validator框架如今成為Jakarta的公共項目的一部分,Struts攜帶了Validator框架,主要是兩個jar文件,jakarta-oto.jar和commons-validator.jar文件.前者提供了一組處理文本的類,具有文本替換過濾和分割等功能,后者提供了一個簡單的,可擴展的驗證框架,包含了通用的驗證方法和驗證規(guī)則.如果Struts使用Validator需要添加那兩個jar文件到lib目錄.Validator框架采用了兩個基于XML的配置文件來配置驗證規(guī)則,這兩個文件是validator-rules.xml和validation.在Struts應(yīng)用中,它們放在WEB-INF目錄.
           Validator-rules.xml文件包含了一組通用的驗證規(guī)則,對所有的String都適用.一般的情況下沒必要修改,除非需要修改或者擴展默認的規(guī)則.建議如果想擴展默認的驗證規(guī)則,最好把自定義的客戶化規(guī)則放在另一個XML文件中,這樣當(dāng)升級Validator框架版本的時候,也無需修改validator-rules.xml文件.因為這個XML是不推薦修改的,所以我只是簡單的介紹一下具體的<validator>元素的幾個屬性,至于具體需要開發(fā)人員來開發(fā)的是validation的XML文件.<validator>元素的name屬性指定驗證規(guī)則的邏輯名,這個名字必須唯一.還有classname和method屬性分別指實現(xiàn)驗證規(guī)則邏輯的類和方法.msg屬性指定來自Resource中的消息key,驗證失敗,根據(jù)這個消息Key去找匹配的消息文本.depends屬性指定在調(diào)用當(dāng)前驗證規(guī)則之前必須調(diào)用其他驗證規(guī)則.
           Validation.xml文件是針對某個具體的Struts應(yīng)用,需要開發(fā)人員來創(chuàng)建的,它可以為應(yīng)用中的ActionForm配置所需要的驗證規(guī)則,取代ActionForm類中編程的方式來實現(xiàn)驗證.<form-validation>元素是validatin.xml文件的根元素,它包含兩個子元素<global>和<formset>,<global>可以出現(xiàn)零次或者多次,而<formset>元素可以出現(xiàn)一次或者多次他們的DTD定義是:<!element form-validation(global*,formset+)>.<global>元素可以定義<constant>子元素,它用來定義常量表達式,在文件中其余地方可以應(yīng)用這些常量表達式.<formset>元素包含兩個子元素<constant>和<form>,<form>元素用于為表單配置驗證規(guī)則,它的name屬性指定了表單的名字.<form>包含一個或者多<field>子元素,用于配置表單中字段的驗證規(guī)則.<field>的<msg>子元素指定驗證規(guī)則對應(yīng)的消息文本,該消息文本替代validator-rules.xml文件中為驗證規(guī)則配置的默認的消息文本.<msg>元素的主要屬性是:name指定驗證規(guī)則的名字,key當(dāng)resource屬性為true的時候,key屬性指定的消息key該消息key應(yīng)該在Resource Bundle中存在.key屬性直接指定消息文本.resource當(dāng)此項為true的時候,表示使用來自ResourceBundle的消息.<field>元素還可以包括附加的子元素<arg0><arg1><arg2>用于替換符合消息中的參數(shù).<field>元素元素還可以包含零個或者多個<var>元素,用來向驗證規(guī)則傳遞參數(shù).
           Validator插件需要在Struts配置文件中配置ValidatorPlugIn插件如下:
           <plug-in className=”org.apache.struts.validator.ValidatorPlugIn”>
            <set-property
                 property=”pathnames”
                 value=”/WEB-INF/validator-rules.xml/WEB-INF/validation.xml”/>
           </plug-in>
          當(dāng)應(yīng)用啟動時,Struts框架會加載ValidatorPlugIn插件,并調(diào)用它的init()方法,根據(jù)pathnames屬性,加載相應(yīng)的validator-rules.xml和validation.xml文件,把驗證信息讀入到內(nèi)存中.
           Validator框架不能用于驗證標準的org.apache.struts.atcion.ActionForm類,如果要使用Validator框架,應(yīng)該采用ActionForm的兩個子類,validator包DynaValidatorForm和ValidatorForm類.DynaValidatorForm支持動態(tài)的ActionForm中使用Validator框架,ValidatorForm支持在標準的ActionForm中使用validator框架.無論是動態(tài)的還是標準的,它們的配置方法都一樣.而且Struts的一些標簽也可以和Validator框架協(xié)同工作,例如<html:errors>和<html:messages>Validator框架提供了對I18N的支持,無論是客戶端驗證,還是服務(wù)器驗證.Validator框架都從應(yīng)用ResourceBundle中獲取錯誤信息.所以說它很好的支持的國際化.總結(jié)一下Struts應(yīng)用中使用validator框架的步驟:
          創(chuàng)建擴展ValidatorForm或者ValidatorActionForm類的ActionForm類,如果使用動態(tài)的ActionForm,則無需創(chuàng)建擴展DynaValidatorForm或者DynaBalidatorActionForm類的子類,可以直接進行.
          在Struts配置文件中配置<form>和<action>元素.
          把Validator框架使用的消息文本添加到應(yīng)用的ResourceBundle中.
          在Validation.xml文件中為表單配置驗證規(guī)則.
          在Struts配置文件中配置ValidatorPlugIn插件.
          如果更深入的學(xué)習(xí)Validator驗證框架,建議閱讀孫衛(wèi)琴的<<精通Struts>>一書,本人
          曾經(jīng)從中受益匪淺,寫文章的很多啟發(fā)也來自該書.
          posted on 2005-11-08 21:02 我心依舊 閱讀(1306) 評論(1)  編輯  收藏

          FeedBack:
          # re: Validator驗證框架[未登錄]
          2007-09-24 16:07 | 流水
          什么文章??
          沒有技術(shù)含量  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德江县| 安龙县| 贵阳市| 临洮县| 永川市| 秭归县| 满城县| 松潘县| 绩溪县| 乌拉特中旗| 祁门县| 郧西县| 澎湖县| 汝南县| 桦川县| 台山市| 观塘区| 泰来县| 菏泽市| 汝南县| 汉源县| 合山市| 都江堰市| 岑溪市| 金平| 琼中| 阳高县| 彰化市| 环江| 志丹县| 渑池县| 乌兰察布市| 双鸭山市| 肃宁县| 东乡族自治县| 通道| 三明市| 阳山县| 洱源县| 慈溪市| 城口县|