1. 程式人生 > >Struts數據驗證

Struts數據驗證

success int font div 之間 校驗 oct err 裏的

Action類繼承了ActionSupport類,而該類實現了Action、Validateable、ValidationAware、TextProvider、LocaleProvider和Seriazbale接口。而其中Validatteable 接口定義了一個validateable()方法,只要在用戶的Action中重寫該方法就可以實現驗證功能。

 1 /**
 2  *會在執行execute之前執行,對傳入的數據進行檢驗
 3  */
 4     @Override
 5     public void validate() {
 6         // 如果用戶名為空,就把錯誤信息添加到Action 類的 fieldError
7 if (user.getUsername()==null||user.getUsername().trim().equals("")) { 8 addFieldError("user.username", "用戶名必須填!"); 9 } 10 }

在類中定義了校驗方法後,該方法會在執行系統的execute()方法執行之前執行,如果執行該方法之後Action類的fieldError中已將包含了數據校驗錯誤信息,將把請求轉發到input視圖處。

1     <action name="StrutsDemo1" class
="cn.itcast.struts2.action.StrutsDemo1"> 2 <!-- 配置結果頁面的跳轉 在Action 中根據不同的返回值配置不同的跳轉頁面 --> 3 <result name="success">/demo1/main.jsp</result> 4 <result name="input">login.jsp</result> 5 </action>

會在登錄界面顯示錯誤信息。

struts2提供了校驗框架,只需要增加一個校驗配置文件就可以完成對數據的校驗。

命名格式:ActionName-validation.xml 其中ActionName就是需要校驗的用戶自定義的Action類的類名 ,且該文件應與Action位於同一路徑,如果Action類中有多個方法,對應的struts.xml文件中就有多個Action配置,這時如果想對其中一個方法進行驗證,命名應該為ActionName-name-calidation.xml,這裏的name是在struts.xml中的Action屬性裏面的name。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC 
 3 "-//Apache Software Foundation//DTD Struts Configuration2.0//EN"
 4 "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 <validators>
 6     <field name="user.username">
 7         <!-- 驗證字符串不能為空 ,選項必填-->
 8         <field-validator type="requiredstring">
 9             <!-- 去空格 -->
10             <param name="trim">true</param>
11             <!-- 錯誤提示信息 -->
12             <message>用戶名必填</message>
13         </field-validator>
14     </field>
15 </validators>

其他整數校驗器:

 1    <!-- 驗證字符串不能為空 ,選項必填-->
 2         <field-validator type="requiredstring">
 3             <!-- 去空格 -->
 4             <param name="trim">true</param>
 5             <!-- 錯誤提示信息 -->
 6             <message>用戶名必填</message>
 7         </field-validator>
 8             
 9         <!-- 整數大小校驗器 -->
10         <field-validator type="int">
11         <param name="min">18</param>
12         <param name="max">100</param>
13         <message>必須在18和100之間</message>
14         </field-validator>
15             
16         <!-- 日期校驗器 -->
17         <field-validator type="date">
18         <param name="min">1990-01-01</param>
19         <param name="max">2017-01-01</param>
20         <message>日期必須在1990-01-01到2017-01-01之間</message>
21         </field-validator>
22             
23         <!-- 郵件地址校驗器 -->
24         <field-validator type="email">
25             <message>必須是有效的email地址</message>        
26         </field-validator>
27         
28         <!-- 網址地址校驗器 -->
29         <field-validator type="url">
30         <message>必須輸入有效的網址</message>
31         </field-validator>
32         
33         <!-- 字符串長度校驗器 -->
34         <field-validator type="stringlength">
35         <param name="minlength">6</param>
36         <param name="maxlength">20</param>
37         <message>字符長度必須在6到20之內</message>
38         </field-validator>
39         
40         <!-- 正則表達式校驗器 -->
41         <field-validator type="regex">
42         <param name="expression"><![CDATA[(\d{6})]]></param>
43         <message>必須是6位的數字</message>
44         </field-validator>
45         

Struts數據驗證