Struts數據驗證
阿新 • • 發佈:2017-10-12
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 類的 fieldError7 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數據驗證