普通的資料驗證是很簡單的validate,就不談了,直接說說xml的驗證,具體解決一些問題;
注:普通的資料驗證便是**驗證,個人習慣叫法而已;
順便先說個簡單的普通資料驗證的技巧:動態的validate方法,我們通過struts.xml配置mothd方法名,故此我們還可以在validate+方法名(),程式設計動態的驗證框架,如validateadd();
注:無論validate+方法名或xml,只要在**中配置到validate(),最終依然會執行validate(),切記;
情況:首先,我們知道從表單的遞交到action,是通過兩層;
一層:資料轉型;
二層:***;
validate方法是屬於***的二層,因此當表單資料型別轉換錯誤的時候,略先儲存在fielderror中:
底層**理論:底層**中是將錯誤存到fielderror中,明顯他是個map,如果validate與validate***一起驗證乙個資料,
並同時新增兩條錯誤資訊,他會同時同通過乙個key取出兩個值來,因此他的value絕對是個list;
fielderror底層**的意義: map("key",list);
jsp顯示:
invalid field value for field "表單的屬性".
1.區域性資料轉換錯誤驗證
改寫資料轉換錯誤時,發出的字串invalid field value for field "表單的屬性".
寫法上與資料轉換的資源檔案類似,同樣寫在與action同級包內,如下;
檔名: action的類名.properties
內容: invalid.fieldvalue.age=age /u8f93/u5165/u9519/u8bef,/u8bf7/u91cd/u65b0/u9012/u4ea4
固定格式 屬性名 輸出的字串資訊
xml方式校驗:
xml存放位置以及命名方式:存放於同名action的包下,命名方式action的類名-validation.xml;
注意:即使是配置檔案驗證也是需要繼承actionsupport
校驗型別:
required :必填校驗器(匹配非空);
引數:trim(去掉兩邊)
requiredstring :必填字串校驗;
引數:trim
int :int型別校驗器;
引數:max(最大數),min(最小數)
double:double型別校驗器;
引數:max,min
date :date型別校驗器;
引數:max(最大時間),min(最小時間)
expression 表示式校驗器:
fieldexpression 字段表示式校驗器(邏輯判斷):
引數:expression
email :電子信箱驗證;
url: **驗證;
visitor visitor校驗器:
conversion 轉換校驗器:
stringlength :字串長度驗證;
引數:maxlength(最大長度),minlength(最小長度)
regex :表示式驗證;
引數:expression(字串),casesensitive(是否區分大小寫);
具體格式如下:
"name">
//name,是action的屬性名;
"requiredstring">
//type,是校驗型別
"trim">true
//name,引數名;value,引數值
使用者名稱不能為空
//錯誤資訊;
其中中還有乙個屬性short-circuit="true",他是是否執行短路的校驗器;
短路校驗器:他是相當於與短路修飾符一樣的存在,當匹配第乙個遇到錯誤時,他直接返回到jsp介面,不會執行以後的匹配;
struts2標籤的一些基本用法
struts2中的標籤 s a 中的href 什麼時候使用 什麼時候該用 什麼時候該用 什麼時候用 s select 中的list 什麼時候使用 什麼時候該用 什麼時候該用 什麼時候用 s if 中的test 什麼時候使用 什麼時候該用 什麼時候該用 什麼時候用 s iterator 中的value...
struts2 的一些心得
1 s form標籤為何不用加.action 在struts2中form標籤已經預設地加了.action.會自動去執行.action檔案。所以在form標籤的action屬性中只加action名就好,不必加.action字尾。如 而不用 2 validate 方法驗證 乙個action類繼承acti...
struts2中的OGNL一些用法補遺
1 如果action裡有乙個欄位user,然後jsp裡提交user.name,則user的name欄位會被自動賦值,但是實際上,user欄位沒有初始化過,為什麼不會npe呢 這是ognl在幕後起的作用,user.name是乙個ognl表示式,當ognl解析器在屬性鏈上發現乙個為null的屬性時,它會...