Validator驗證框架


Validator驗證框架

 系統分析

在設計Validator驗證框架時,需要明確以下問題。

(1)當用戶沒有輸入數據時,彈出英文提示信息。

(2)當用戶輸入的數據長度大於系統設置的數據長度,彈出英文提示信息。

(3)當用戶輸入的賬號或密碼不正確,彈出英文提示信息。

1.2 工作流程圖
Validator驗證框架系統流程如圖1所示。

技術要點分析

1.1 技術要點
Validator驗證框架在Struts應用中得到了廣泛的運用,Validator驗證框架主要依賴兩個Jar文件。
q jakarta-oro.jar:該文件主要提供了一些文本類、具有文本替換、過濾和分割等功能。
q commons-validator.jar:該文件提供了一個簡單、可擴展的驗證框架,包括了通用的驗證方法和規則。
在Struts中,這兩個Jar文件添加到應用WEB-INF/lib目錄中。
Validator框架采用兩個基於XML的配置文件來配置驗證規則。這兩個文件為validator-rule.xml和validation.xml。在Struts中,它們均存放在WEB-INF文件夾下。

1.2 validator-rules.xml文件
validator-rules.xml文件包括了一組通用的驗證規則,對所有的Struts都適用。一般情況下,沒有必要修改該文件,除非需要修改或擴展默認的規則。
說明:如果想擴展默認的驗證規則,最好把自定義的規則放在另一個XML文件中,而不是直接添加到validator-rules.xml文件中,這樣,當升級Validator框架的版本時,不需要修改validator-rules.xml文件。
在validator-rules.xml文件中,每個<validator>元素定義了一個唯一的驗證規則。例如,以下代碼定義了一個名為“required”的驗證規則。

<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>

(1)name屬性
name屬性指定驗證規則的邏輯名,這個名字必須是唯一的。
(2)classname和method屬性
classname和method屬性分別指定實現驗證規則邏輯的類和方法。
(3)msg屬性
msg屬性制定來自於資源文件中的消息key。當驗證失敗時,Validator框架將根據這個消息key到資源文件中查找匹配的消息文本。
(4)depends屬性
depends屬性制定在調用當前驗證規則之前必須先調用的其他驗證規則。例如以下“maxlength”驗證規則的配置代碼中使用了depends屬性。

<validator name="maxlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMaxLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
depends="required"
msg="errors.maxlength"
jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>

以上代碼表明,在調用“maxlength”驗證規則之前,先調用“required”規則。如果depends屬性包含多個驗證規則,則用逗號隔開,例如:
depends="required,integer"
如果調用depends屬性指定的驗證規則驗證失敗,就不會再調用下一個規則。

1.3 valiation.xml文件
Validator框架的另一個配置文件為valiation.xml文件,這個文件用於聲明Form Bean應該采用的驗證例程,取代在ActionForm類中編程的方式來實現驗證邏輯。下面將介紹valiation.xml文件中的元素。
(1)<form-validation>元素
<form-validation>元素是Validator配置文件的根元素,它包含兩個子元素:<global>和<formset>元素。<global>元素可以出現0次或者多次,而<formset>元素可以出現一次或者多次。
(2)<global>元素
在<global>元素中可以定義<constant>子元素,它用來定義常量表達式,在文件的其余地方可以應用這些常量表達式。
(3)<formset>元素
<formset>元素包含兩個子元素:<constant>和<form>。<constant>可以出現0次或者多次,<form>元素可以出現一次或者多次。

(4)<form>元素
<formset>元素的<form>子元素用於為表單配置驗證規則,它的name屬性指定了表單的名字。<form>元素可以包含一個或者多個<field>子元素。
(5)<field>元素
<form>元素的<field>子元素用於配置表單中的字段的驗證規則。
(6)<msg>元素
<field>元素的<msg>子元素指定驗證規則對應的消息文本。
(7)<arg>元素
<field>元素可以包括4個附加的子元素:<arg0>、<arg1>、<arg2>以及<arg3>,用戶替換復合消息中的參數。<arg0>元素指定第一個替換值,<arg1>元素指定第二個替換值,依次類推。

(8)<var>元素

<field>元素還可以包含0個或者多個<var>元素。<var>元素用來向驗證規則傳遞參數。

 

運行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM