Struts2驗證框架的配置及validation.xml常用的驗證規則

validation.xml 的命名規則和放置路徑:
文件名:<ActionClassName>-validation.xml
<ActionClassName>就是要驗證的Action類的名字。要將此文件放於Class文件相同的目錄。

如果在Action類在struts配置中有多個action實例(action name),那麼對應某個action的驗證文件名規則如下:

文件名:<ActionClassName>-<aliasName>-validation.xml

例如:UserAction-login-validation.xml

(注意:上面的<aliasName>並不是method name,而是struts.xml中配置的action的name)



其實message的信息還有可以配置國際化:配置方法也極其簡單就是<message key="userpass.required"></message>,key對應的是國際化配置文件中的國際化信息。

Struts2 的驗證規則大概有以下數種:
required:必填校驗器
requiredstring:必填字符串校驗器
int:整數校驗器
double:雙精度浮點數校驗器
date:日期校驗器
expression:表達式校驗器
fieldexpression:字段表達式校驗器
email:電子郵件校驗器
url:網址校驗器
visitor:Visitor校驗器
conversion:轉換校驗器
stringlength:字符串長度校驗器
regex:正則表達式校驗器

常用的驗證規則:

1。必填檢驗
<validators>
<field name="username">
<field-validator type="required">
<message>指定檢驗失敗的提示信息</message>
</field-validator>
</field>
</validators>


2。必填字符串檢驗
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>指定檢驗失敗的提示信息</message>
</field-validator>
</field>
</validators>


3。整數檢驗器/浮點檢驗
<validators>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年紀必須在1到150之間</message>
</field-validator>
</field>
</validators>


4。日期檢驗
<validators>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message key="birth.range"/>
</field-validator>
</field>
</validators>


5.字段表達式檢驗器(要求指定字段滿足一個邏輯表達式)
<validators>
<field name="re_pass">
<field-validator type="fieldexpression">
<!--指定邏輯表達式 -->
<param name="expression"> (pass eq re_pass)</param>
<message>密碼必須和確認密碼相等</message>
</field-validator>
</field>
</validators>


6.郵件地址校驗
<validators>
<field name="email">
<field-validator type="email">
<message>你的電子郵件地址必須是一個有效的電郵地址</message>
</field-validator>
</field>
</validators>


7。網址檢驗
<validators>
<field name="url">
<field-validator type="url">
<message>你的主頁地址必須是一個有效的網址</message>
</field-validator>
</field>
</validators>


8.字符串長度檢驗
<validators>
<field name="user">
<field-validator type="stringlength">
<param name="minlength">4</param>
<param name="maxlength">20</param>
<message>你的用戶名長度必須在4到20之間</message>
</field-validator>
</field>
</validators>


9.正則表達式檢驗
<validators>
<field name="user">
<field-validator type="regex">
<param name="expression_r"><![CDATA[(\w{4,25})]]></param>
<message>您輸入的用戶名只能是字母和數組,且長度必須在4到25之間</message>
</field-validator>
</field>
</validators>


這裏有個地方需要注意:form中要加入validate=“true”這個屬性。


這種方式就使用了國際化的信息。

***Action.action這個挺簡單的就是常規的action寫法,在execute中驗證表單,或自己封裝方法驗證表單,但是不能繼承validate()方法,因爲action執行的時候實現檢察validate方法的,如果這樣的話就配置重複了,不過有什麼結果我沒有測試(沒啥意義)。


有一點有必要提一下,action中必須配置input這個result,因爲如果驗證失敗後struts2會自動轉向到input的result,不管你的action中配置的驗證失敗的result是什麼。所以這個input屬性的result不能落下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章