Struts2中的校驗

1、編寫校驗規則文件

爲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>

2、使用客戶端校驗

使用客戶端進行校驗首先要將輸入頁面的表單元素改成使用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(雙精度校驗器);

3、手動完成輸入校驗

該方式最爲靈活,能夠處理許多規則沒法校驗的狀況,好比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對應的處理邏輯方法。

相關文章
相關標籤/搜索