struts2的一些用法 四 部分資料驗證

2021-04-23 05:16:30 字數 1936 閱讀 5856

普通的資料驗證是很簡單的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的屬性時,它會...