熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

詳解Struts中Validator驗證框架的使用

2022-06-13   來源: Java開源技術 

  Validator框架已成為Jakarta的公共項目的一部分可以從下載單獨的Validator框架在Struts中已經帶了這個框架

  Validator主要依賴兩個jar包

  Jakartaorojar-提供一組處理文本的類具有文本替換過濾和分割功能

  Commonsvalidatorjar提供了一個簡單可擴展的驗證框架包含了通用的驗證方法和驗證規則

  在用Struts中用這個框架需加入這兩個包用起來感覺還不錯

  下面介紹一下

  Validator采用基於兩個xml文件的方式來配置驗證規則分別為validationxmlvalidatorrulesxml在struts應用中需放到webinf目錄下

  .validatorrulesxml

  這個文件包含了一組驗證規則對所有struts應用都適用一般情況不用修改這個文件除非要修改或擴展默認規則如果要給應放到另一個xml文件中而不是直接添加到validatorrulesxml文件中這樣當Validator升級時不用修改validatorrulesxml文件

  .validatorxml文件

  這個文件是針對於具體struts應用的他可以為應用中的ActionForm配置驗證規則而不用編碼實現驗證

  例如一個驗證登陸form的例子要求用戶名必須填寫秘密要求必填最大最小長度及其內容的要求

  代碼

   <formvalidation>  
    <global>  
        <! 密碼由數字個英文字母或者下劃線組成的字符串  >  
        <constant>  
            <constantname>pwd</constantname>  
            <onstantvalue>^\w+$</onstantvalue>  
        </constant>  
    </global>  
    <formset>  
        <form name=loginForm>  
            <! 這裡的用戶名使用郵箱驗證時使用正則表達式進行驗證 >  
            <field property=useruserId depends=required>  
                <arg key=useruserId />  
            </field>  
            <field property=useruserPwd depends=requiredminlengthmaxlengthmask>  
                <! msg name=mask key=errorsinvalid />  
                <arg key=useruserPwd />  
                <arg name=minlength key=${var:minlength} resource=false />  
                <arg name=maxlength key=${var:maxlength} resource=false />  
                <var>  
                    <varname>mask</varname>  
                    <varvalue>^\w+$</varvalue>  
                </var>  
                <var>  
                    <varname>minlength</varname>  
                    <varvalue></varvalue>  
                </var>  
                <var>  
                    <varname>maxlength</varname>  
                    <varvalue></varvalue>  
                </var>  
            </field>  
        </form>  
    </formset>  
</formvalidation>

  validatorxml和validatorrulesxml文件的語法不在這裡說明

  Validator插件

  為了在struts中用validator可以用插件方式加載Validator框架需在struts配置文件中配置ValidatorPlugIn插件同時寫明兩個xml文件的路徑

  應用啟動時Strust會加載這個插件並調用他的init()方法init()方法根據pathnames加載

  相應的validatorxmlvalidatorxml文件把驗證信息讀入到內存中

  代碼

  

  <plugin className=orgapachestrutsvalidatorValidatorPlugIn> <setproperty value=/WEBINF/validatorrulesxml/WEBINF/validationxml property=pathnames /> </plugin>

  .Validator和ActionForm

  Validator框架不能直接orgapachestrutsactionActionForm應采用ActionForm的兩個子類

  ValidatorActionForm和ValidatorForm

  DynaValidatorActionFrom繼續自DynaValidatorForm

  支持動態在ActionFrom中使用Validator框架

  ValidatorFormActionForm繼承ValidatorForm

  支持在標准ActionForm中使用Validator框架

  DynaValidtaorForom和ValidatorForm類都實現了validator()方法如果驗證失敗就會返回包含錯誤消息的ActionMessage對象並把該對象添加到ActionErrors集合對象中由validator方法最後返回ActionErrors對象

  ValidatorForm有一個子類ValidatorActionForm

  ValidatorForm

  Strust配置文件的元素的name屬>validatorxml文件

元素的name屬性

  ValidatorActionForm

  Strust配置文件的元素的path屬>validatorxml文件元素的name屬性

  Validator框架提供這兩個類目的在於可以更加精確的控制執行驗證的條件

  例如

  loginForm表單對應兩個驗證規則AB對應logincancel兩個動作

  如果對於這兩個動作都要執行規則AB則可以擴展一個ValidatorFom類loginForm然後配置

  代碼

  

  <formset> <form name=loginForm> 驗證規則A 驗證規則B </form> … </formset>

  如果對於用戶的login動作執行規則A對於cancel動作執行B規則則可以擴展一個ValidatorActionFom類

  loginForm

  然後配置

  代碼

  

  <formset> <form name=login> 驗證規則A </form> <form name=cancel> 驗證規則B </form> </formset>

  而DynaValidatorForm和DynaValidatorActionForm區別和ValidatorFrom和ValidatorActionForm的區別一樣

  .在validator框架中使用JavaScript

  默認情況下validator框架在服務器端執行表單驗證也可以在客戶端驗證

  如果在客戶端驗證需要使用struts的標簽他能在jsp頁面中生成用於客戶端驗證

  的JavaScript的腳本

  ) 在validator-rulesxml文件的元素中配置元素默認struts框架的validator-rulesxml文件已經包含了javascript子元素也可以將這些javascript集中放到一個validatorjs的文件中也頁面中引入代碼

  < script language=Javascript src=js/validatorjs>< /script>

  ) 在Jsp頁面中包含< html:javascript>

  < html:javascript formName=loginForm> 這個標簽的form的name屬性制定需要驗證的表單名字

  他能夠訪問為表單配置的驗證規則的javascript元素把包含的腳本寫到jsp頁面中生成validateLoginForm的函數負責執行驗證邏輯

  ) 對需要驗證的表單定義onsubmit事件

  )代碼

  < html:form action=manageContractdo onsubmit=return validateContractForm(this);>

  ) 用戶在表單上提交後就會調用

  標簽生成的js腳本validateLoginForm函數執行驗證如果驗證失敗就會彈出對話框提示

  不會提交的服務器端

  小結

  使用步驟

  ) 創建擴展ValidatorForm或ValidatorActionForm類的ActionForm如果使用動態ActionForm

  則不用擴展DynaValidatorForm或DynaValidatorActionForm類的子類可以直接進行第二步

  ) 在struts文件中配置form和action元素

  ) 把validator框架使用的文本信息添加到應用的Resource Bundle中

  ) 代碼

  < messageresources parameter=comwebApplicationResources />

  ) 在validatorxml文件中為表單配置驗證規則

  ) 在struts配置文件中配置validatorPlugIn插件

  代碼

  

  <plugin className=orgapachestrutsvalidatorValidatorPlugIn> <setproperty value=/WEBINF/validatorrulesxml/WEBINF/validationxml property=pathnames/> </plugin>

  

 


From:http://tw.wingwit.com/Article/program/Java/ky/201311/27918.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.