1. validate()驗證
將對頁面表單驗證的內容寫到validate()方法中,實現驗證和業務處理內容的分離
在Action中添加 validate()方法 public void validate(){ if(//****){ addFieldError("name","XX不能XXX。。。。"); // 如果條件不匹配,可以使用 addFieldError()方法添加到對ActionContext中。 } }
在jsp頁面 通過 <s:fielderror/> 顯示錯誤信息
Action中添加了validate()方法后, 一旦在驗證過程中添加了驗證信息,那么Struts2框架會更具Action的配置跳轉到input的視圖頁面。
提示:1) 接受參數時, 數據失敗也會調用validate()方法 2) validate()方法驗證不通過,不會執行業務方法
2.validateXxx() 驗證
當多個表單提交到同一個action頁面是,validate()方法對所有表單生效,可以使用validateXxx()方法實現對某一個業務的驗證
例如:
JSP 表單 提交到 Login.action 的 login() 方法, 可以再Login.action 對應類中添加 validateLogin() 的驗證方法
提示:
1) validate()方法會對Action類中所有業務方法起作用 2)validateXxx()方法實現對某個業務方法進行數據驗證?! :Struts2支持validateXxx()方法進行數據驗證 i:使用validateRegister()方法實現針對 register()方法的驗證 3)validate()方法和 validateXxx()方法同時存在時,都會起作用 4)validateXxx()方法的調用優于validate()方法
3. Struts2的框架驗證
不管是采用上面哪兩種方法,都需要手動編寫校驗規則。當驗證規則復雜時就會導致Action類的臃腫。 可以使用Struts2框架,用戶
無需編碼,只要在外部配置文件中制定某個字段需要進行的驗證類型,并提供出錯信息即可,能夠減輕開發者的負擔,提高開發效率。
1) Action 類中不需要添加 validate() 或 validateXxx() 方法
2) struts.xml 文件不需要驗證配置
3) JSP頁面
<s:fielderror/> <form action="login.action"> <s:text name="userName"></s:text> : <s:textfield name="name" ></s:textfield> <br/> <s:text name="userPwd"></s:text>: <s:passWord name="pwd" ></s:password> <br/> <s:text name="submit"></s:text> : <input type="submit" /> </form>
4) 在 Action 同包下創建驗證文件。
驗證文件的命名規則: ClassName-validation.xml 或者 ClassName-alias-validation.xml
【文件可以查看struts的示例文件】
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN""http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"><validators><field name="name"><field-validator type="requiredstring"><param name="trim">true</param><message>用戶名不能為空</message></field-validator><field-validator type="stringlength"><param name="maxLength">10</param><param name="minLength">6</param><message>用戶名長度必須在 ${minLength}和 ${maxLength}之間 </message></field-validator></field></validators>
requiredstring : 規定一個字符串不能為null,且不能為空字符串
stringlength: 檢查一個字符串的長度范圍, 可以通過minLength和maxlength兩個參數指定字段的最小長度和最大程度
fieldexPRession: 使用OGNL表達式來驗證字段。 例如 <param name="expression" >pwd1==pwd2</param>
regex:正則表達式
4. 數據校驗總結
新聞熱點
疑難解答