爲Action中的屬性指定一個校驗規則文件,文件名應該爲<Action名字>-validation.xml的形式。java
<validators> <field name='action中的屬性'> <field-validator type="該屬性須要知足的規則"> <param name=""></param> <message>錯誤提示</message> </field-validator > </field> </validators>
當校驗失敗後,struts2也會返回「input」的Result,配置對應的Action返回試圖。數據庫
<action name="upd" class="com.shcredit.controller.TestAction"> <result name="input">/jsp/appkind/appkindupd.jsp</result> <result name="success" type="redirect">qry.action?flag=1</result> </action>
使用客戶端進行校驗首先要將輸入頁面的表單元素改成使用Struts2標籤<s:form>來生成表單,爲該<s:form>元素增長validate="true"屬性。app
將請求頁面放置於WEB-INF/content路徑下,讓瀏覽者訪問資源以前先通過它的核心Filter,在struts.xml中增長配置:jsp
<action name="*"> <result>/WEB-INF/content/{1}.jsp</result> </action>
啓用客戶端校驗的表單action和namespace要分開寫。將原來<s:form>中的action="/test/validate"寫成namespace="test",action="validate"。ide
客戶端校驗只支持以下幾種校驗器:ui
required validator(必填校驗器);this
requiredstring validator(必填字符串校驗器);url
stringlength validator(字符串長度校驗器);spa
regex validator(表達式校驗器);code
email validator(郵件校驗器);
url validator(網址校驗器);
int validator(整數校驗器);
double validator(雙精度校驗器);
該方式最爲靈活,能夠處理許多規則沒法校驗的狀況,好比name值在數據庫中惟一性,文件校驗等。
1)重寫ActionSupport中的validate()方法;
@Override public void validate() { this.clearFieldErrors(); // 一、檢查用戶名稱,不能爲空、不能有特殊字符 if (!ParameterValidate.validateNull(appType.getTypeName())) { this.addFieldError("appTypeName_error", "應用類別名稱不能爲空!"); } else if (ParameterValidate.filterCharacter(appType.getTypeName())) { this.addFieldError("appTypeName_error", "應用類別名稱不能包含特殊字符!"); } }
一旦校驗未經過,會經過該action的"input"試圖將fieldError中的錯誤返回值對應JSP中的<s:fielderror>中。
2)重寫validateXxx()方法
爲了實現校驗指定邏輯的功能,struts2中的action提供了validateXxx()方法,其中Xxx便是Action對應的處理邏輯方法。