Struts Validator驗證框架詳細講解
框架能夠克服在ActionForm Bean中以編程方式進行數據驗證的局限,它允許Struts應用靈活的配置驗證規則,無需編程。
Struts Validator框架主要依賴兩個JAR文件:jakarta-oro.jar和commons-validator,.jar
Struts Validator框架采用兩個基于XML的配置文件來配置驗證規則。這兩個文件為validator-rules.xml和validation.xml。
Validator-rules.xml文件保換了一組通用的驗證規則,對所有的Struts應用都適用。一般情況下,沒有必要修改該文件,除非需要修改或擴展默認的規則。
元素有7個屬性:
Name屬性:name屬性指定驗證規則的邏輯名,這個名字必須是唯一的。
Classname和method屬性:classname和method屬性分別指定實現驗證規則邏輯的類和方法。
MethodParams:屬性用來指定驗證方法包含的參數,多個參數之間以逗號隔開。
Msg屬性:msg屬性指定來自于Resource Bundle中的消息key。當驗證失敗時,Validator框架將根據這個消息key到
resource Bundle中查找匹配的消息文本。
Depends屬性:depends屬性指定在調用當前驗證規則之前必須先調用的其他驗證規則。
Validator框架提供了基本的,通用的驗證規則,對struts應用以及非Struts應用都適用。
Org.apache.commons.validator.GenericValidator類提供了一組實現這些規則的靜態方法。
GenericValidator類的驗證方法:
isBlankOrNull: 驗證字段是否為null,或者長度是否為0。
isByte:驗證字段是否可以被轉換為有小的byte類型的數據。
isCreditCard:驗證字段是否為有效的信用卡號。
isDate:驗證字段是否為有效的日期。
isDouble:驗證字段是否可以被轉換成有效的double類型的數據。
isEmail:驗證字段是否為有效的Email地址。
isFloat:驗證字段是否可以被轉換為有效的float類型的數據。
isInRange:雁陣谷子斷時候借于最小值和***值之間。
isInt:驗證字段是否可以被轉換為有效的int類型的數據。
isLong:驗證字段是否可以被轉換為有效的long類型的數據。
isShort:驗證字段是否可以被轉換為有效的short類型的數據。
matchTegexp:驗證字段是否和正規表達式匹配。
maxLength:驗證字段時候小于或等于***值。
minLength:驗證字段時候大于或等于最小值。
在Struts框架中定義了專門用于驗證表單字段的org.apache.struts.validator.FieldChecks類,它提供了和GenericValidator類似的方法。以下是FieldChecks類包含的驗證方法:
validateByte
validateCreditCard
validateDate
validateDouble
validateEmail
validateFloat
validateInteger
validateLong
validateMask
validateMinLength
validateMaxLength
validateRange
validateRequired
validateShort
validation.xml文件:
這個文件是針對于某個具體Struts應用的,需要開發人員來創建,它可以為應用中的ActionForm配置所需的驗證規則,取代在ActionForm類中以編程的方式來實現驗證邏輯。
Validator框架不能用于驗證標準的org.apache.struts.action.ActionForm類。如果要使用Validator框架應該采用ActionForm類的兩個子類:DynavalidatorForm和ValidatorForm。
Validator框架可以進行瀏覽器客戶端驗證。如果要進行客戶端驗證,需要用到Struts的標簽,它能夠在JSP網頁中生成用于客戶端驗證的JavaScript腳本。
【編輯推薦】