Validator驗證框架javascript
在設計Validator驗證框架時,須要明確如下問題。java
(1)當用戶沒有輸入數據時,彈出英文提示信息。apache
(2)當用戶輸入的數據長度大於系統設置的數據長度,彈出英文提示信息。編程
(3)當用戶輸入的帳號或密碼不正確,彈出英文提示信息。框架
1.2 工做流程圖
Validator驗證框架系統流程如圖1所示。ui
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」的驗證規則。orm
<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"/>xml
(1)name屬性
name屬性指定驗證規則的邏輯名,這個名字必須是惟一的。
(2)classname和method屬性
classname和method屬性分別指定實現驗證規則邏輯的類和方法。
(3)msg屬性
msg屬性制定來自於資源文件中的消息key。當驗證失敗時,Validator框架將根據這個消息key到資源文件中查找匹配的消息文本。
(4)depends屬性
depends屬性制定在調用當前驗證規則以前必須先調用的其餘驗證規則。例如如下「maxlength」驗證規則的配置代碼中使用了depends屬性。blog
<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>元素用來向驗證規則傳遞參數。