validation.xml 的命名規(guī)則和放置路徑:
文件名:<ActionClassName>-validation.xml
<ActionClassName>就是要驗(yàn)證的Action類的名字。要將此文件放于Class文件相同的目錄。
如果在Action類在struts配置中有多個(gè)action實(shí)例(action name),那么對(duì)應(yīng)某個(gè)action的驗(yàn)證文件名規(guī)則如下:
文件名:<ActionClassName>-<aliasName>-validation.xml
例如:UserAction-login-validation.xml
(注意:上面的<aliasName>并不是method name,而是struts.xml中配置的action的name)
validation.xml 的內(nèi)容示例:
文件名:<ActionClassName>-validation.xml
<ActionClassName>就是要驗(yàn)證的Action類的名字。要將此文件放于Class文件相同的目錄。
如果在Action類在struts配置中有多個(gè)action實(shí)例(action name),那么對(duì)應(yīng)某個(gè)action的驗(yàn)證文件名規(guī)則如下:
文件名:<ActionClassName>-<aliasName>-validation.xml
例如:UserAction-login-validation.xml
(注意:上面的<aliasName>并不是method name,而是struts.xml中配置的action的name)
validation.xml 的內(nèi)容示例:
其實(shí)message的信息還有可以配置國(guó)際化:配置方法也極其簡(jiǎn)單就是<message key="userpass.required"></message>,key對(duì)應(yīng)的是國(guó)際化配置文件中的國(guó)際化信息。
Struts2 的驗(yàn)證規(guī)則大概有以下數(shù)種:
required:必填校驗(yàn)器
requiredstring:必填字符串校驗(yàn)器
int:整數(shù)校驗(yàn)器
double:雙精度浮點(diǎn)數(shù)校驗(yàn)器
date:日期校驗(yàn)器
expression:表達(dá)式校驗(yàn)器
fieldexpression:字段表達(dá)式校驗(yàn)器
email:電子郵件校驗(yàn)器
url:網(wǎng)址校驗(yàn)器
visitor:Visitor校驗(yàn)器
conversion:轉(zhuǎn)換校驗(yàn)器
stringlength:字符串長(zhǎng)度校驗(yàn)器
regex:正則表達(dá)式校驗(yàn)器
常用的驗(yàn)證規(guī)則:
1。必填檢驗(yàn)
<validators>
required:必填校驗(yàn)器
requiredstring:必填字符串校驗(yàn)器
int:整數(shù)校驗(yàn)器
double:雙精度浮點(diǎn)數(shù)校驗(yàn)器
date:日期校驗(yàn)器
expression:表達(dá)式校驗(yàn)器
fieldexpression:字段表達(dá)式校驗(yàn)器
email:電子郵件校驗(yàn)器
url:網(wǎng)址校驗(yàn)器
visitor:Visitor校驗(yàn)器
conversion:轉(zhuǎn)換校驗(yàn)器
stringlength:字符串長(zhǎng)度校驗(yàn)器
regex:正則表達(dá)式校驗(yàn)器
常用的驗(yàn)證規(guī)則:
1。必填檢驗(yàn)
<validators>
<field name="username">
<field-validator type="required">
<message>指定檢驗(yàn)失敗的提示信息</message>
</field-validator>
</field>
</validators>
2。必填字符串檢驗(yàn)
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>指定檢驗(yàn)失敗的提示信息</message>
</field-validator>
</field>
</validators>
3。整數(shù)檢驗(yàn)器/浮點(diǎn)檢驗(yàn)
<validators>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年紀(jì)必須在1到150之間</message>
</field-validator>
</field>
</validators>
4。日期檢驗(yàn)
<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.字段表達(dá)式檢驗(yàn)器(要求指定字段滿足一個(gè)邏輯表達(dá)式)
<validators>
<field name="re_pass">
<field-validator type="required">
<message>指定檢驗(yàn)失敗的提示信息</message>
</field-validator>
</field>
</validators>
2。必填字符串檢驗(yàn)
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>指定檢驗(yàn)失敗的提示信息</message>
</field-validator>
</field>
</validators>
3。整數(shù)檢驗(yàn)器/浮點(diǎn)檢驗(yàn)
<validators>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年紀(jì)必須在1到150之間</message>
</field-validator>
</field>
</validators>
4。日期檢驗(yàn)
<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.字段表達(dá)式檢驗(yàn)器(要求指定字段滿足一個(gè)邏輯表達(dá)式)
<validators>
<field name="re_pass">
<field-validator type="fieldexpression">
<!--指定邏輯表達(dá)式 -->
<param name="expression"> (pass eq re_pass)</param>
<message>密碼必須和確認(rèn)密碼相等</message>
</field-validator>
</field>
</validators>
6.郵件地址校驗(yàn)
<validators>
<field name="email">
<field-validator type="email">
<message>你的電子郵件地址必須是一個(gè)有效的電郵地址</message>
</field-validator>
</field>
</validators>
7。網(wǎng)址 檢驗(yàn)
<validators>
<field name="url">
<field-validator type="url">
<message>你的主頁(yè)地址必須是一個(gè)有效的網(wǎng)址</message>
</field-validator>
</field>
</validators>
<param name="expression"> (pass eq re_pass)</param>
<message>密碼必須和確認(rèn)密碼相等</message>
</field-validator>
</field>
</validators>
6.郵件地址校驗(yàn)
<validators>
<field name="email">
<field-validator type="email">
<message>你的電子郵件地址必須是一個(gè)有效的電郵地址</message>
</field-validator>
</field>
</validators>
7。網(wǎng)址 檢驗(yàn)
<validators>
<field name="url">
<field-validator type="url">
<message>你的主頁(yè)地址必須是一個(gè)有效的網(wǎng)址</message>
</field-validator>
</field>
</validators>
8.字符串長(zhǎng)度檢驗(yàn)
<validators>
<field name="user">
<field-validator type="stringlength">
<param name="minlength">4</param>
<param name="maxlength">20</param>
<message>你的用戶名長(zhǎng)度必須在4到20之間</message>
</field-validator>
</field>
</validators>
<param name="minlength">4</param>
<param name="maxlength">20</param>
<message>你的用戶名長(zhǎng)度必須在4到20之間</message>
</field-validator>
</field>
</validators>
9.正則表達(dá)式檢驗(yàn)
<validators>
<field name="user">
<field-validator type="regex">
<param name="expression_r"><![CDATA[(\w{4,25})]]></param>
<message>您輸入的用戶名只能是字母和數(shù)組,且長(zhǎng)度必須在4到25之間</message>
</field-validator>
</field>
</validators>
接下來(lái)我舉一個(gè)簡(jiǎn)單的登錄驗(yàn)證的例子:
login.jsp
這里有個(gè)地方需要注意:form中要加入validate=“true”這個(gè)屬性。
***Action-validation.xml
這種方式就使用了國(guó)際化的信息。
***Action.action這個(gè)挺簡(jiǎn)單的就是常規(guī)的action寫法,在execute中驗(yàn)證表單,或自己封裝方法驗(yàn)證表單,但是不能繼承validate()方法,因?yàn)閍ction執(zhí)行的時(shí)候?qū)崿F(xiàn)檢察validate方法的,如果這樣的話就配置重復(fù)了,不過(guò)有什么結(jié)果我沒有測(cè)試(沒啥意義)。
struts.xml配置
有一點(diǎn)有必要提一下,action中必須配置input這個(gè)result,因?yàn)槿绻?yàn)證失敗后struts2會(huì)自動(dòng)轉(zhuǎn)向到input的result,不管你的action中配置的驗(yàn)證失敗的result是什么。所以這個(gè)input屬性的result不能落下。
效果
火狐下面的中文語(yǔ)言:

ie下的英文語(yǔ)言:
