校驗檔案的搜尋規則

2021-09-04 13:22:32 字數 3498 閱讀 6668

struts 2

的乙個action

中可能包含了多個處理邏輯,當乙個

action

類中包含多個類似於

execute

的方法時,每個方法都是乙個處理邏輯。不同的處理邏輯可能需要不同的校驗規則,

struts 2

允許為不同控制邏輯指定不同校驗規則的支援。

當需要讓乙個

action

可以處理多個請求時,應該在配置該

action

時指定method

屬性。通過這種方式,就可以將乙個

action

處理類配置成多個邏輯

action。

在上面的

action

類中增加乙個

login

方法,該

login

方法不做任何處理,只是簡單地返回

success

字串。下面在

struts.xml

檔案中將該

action

類配置成兩個邏輯

action

。配置這兩個邏輯

action

的配置片段如下。

程式清單:

codes\04\4.2\overriderule\web-inf\src\struts.xml

method="">

/web-inf/content/form.jsp

/web-inf/content/show.jsp

假設上面兩個

action

的校驗規則不同,註冊時的校驗規則還是之前的校驗規則,但登入的校驗規則需要增加的使用者名稱和密碼相同(這只是假設,實際應用中可能需要密碼和重複密碼相同,但不會要求使用者名稱和密碼相同)。

如果按之前的方式來指定校驗規則檔案,這個校驗規則檔案肯定分不清楚到底要校驗哪個處理邏輯。為了能精確控制每個校驗邏輯,

struts 2

允許通過為校驗規則檔名增加

action

別名來指定具體需要校驗的處理邏輯。即採用如下的形式:

--validation.xml

其中actionclassname

是action

處理類的類名,而

actionaliasname

就是在struts.xml

中配置該

action

時所指定的

name

屬性。例如,如果我們需要為

loginpro

邏輯action

單獨指定校驗規則,則校驗檔案的檔名為

registaction-loginpro-validation.xml

(該檔案也需要與

registaction

的class

檔案放在同一路徑下),該檔案的內容如下。

程式清單:

<?xml version="1.0" encoding="gbk"?>

"-//opensymphony group//xwork validator 1.0.3//en"

"">

上面的校驗規則檔案僅僅指定了

action

的name

屬性必須和

pass

屬性相同,那麼系統中原有的校驗規則對

loginpro action

是否依然有效呢?

上面使用了表示式校驗器,關於各校驗器的具體用法,請參閱下一節的介紹。

本應用原來的表單頁稍作修改,讓該表單頁具有兩個按鈕,乙個「登入」提交按鈕提交到

loginpro

,另乙個「註冊」提交按鈕提交到

registpro

。如果使用者單擊「登入」提交按鈕,該表單將會提交到

loginpro action

,那麼上面指定的

registaction-loginpro-validation.xml

校驗規則就會起作用了。如果校驗失敗,看到如圖

4.17

所示的校驗失敗頁面。

4.17 

增加校驗規則

從圖4.17

中可以看出,

registaction-validation.xml

檔案中的校驗規則,依然會對名為

loginpro

的action

起作用。實際上,名為

loginpro

的action

中包含的校驗規則是

registaction-validation.xml

和registaction- loginpro-validation.xml

兩個檔案中規則的總和。

除此之外,還有一種情形——如果系統中包含了兩個

action

:baseaction

和registaction

,其中registaction

繼承了baseaction

,且兩個

action

都指定了對應的配置檔案,則

registaction

對應action

的校驗規則實際上是

registaction-validation.xml

和baseaction-validation.xml

兩個檔案中規則的總和。

假設系統有兩個

action

:baseaction

和registaction

,則系統搜尋規則檔案順序如下: (

1)baseaction-validation.xml (

2)baseaction-

別名-validation.xml (

3)registaction-validation.xml (

4)registaction-

別名-validation.xml 4

份檔案,也不管是否找到配置檔案,系統總是按固定順序搜尋。

假如系統的

struts.xml

檔案中有如下配置片段:

...

如果上面的

registaction

類還繼承了

baseaction

類,那麼上面這個名為

login

的action

的校驗規則是

baseaction-validation.xml

、baseaction-loginpro-validation.xml

、registaction-validation.xml

和registaction-loginpro-validation.xml 4

份規則檔案裡規則的總和。

注意:

struts 2

搜尋規則檔案是從上而下的,實際用的校驗規則是所有校驗規則的總和。如果兩個校驗檔案中指定的校驗規則衝突,則後面檔案中的校驗規則取勝。

Struts 2 校驗檔案

校驗是一件很繁瑣的事,雖然也不是很難,但是就是重複同樣的工作有時候讓人覺得danteng,用struts 2的校驗框架的時候我是不會刻意去記那些校驗器的,因為我覺得這些東西沒必要記,用多了自然就會寫出來,下面我記錄的乙個校驗檔案,我此刻記錄的時候是可以起作用的,以後要用的時候就來這裡拿了 email...

java 校驗檔案頭 判斷虛假檔案

下面方法 bytestohexstring 獲取檔案頭轉化為16進製制陣列 mp4檔案頭恰好是00000020 檔案流寫入到檔案 param inputstream param file return public void inputstreamtofile inputstream ins,fil...

struts2中的資料校驗檔案配置

對必填校驗 requiredvalidatorfield required 必填內容 message field validator field 必填字串校驗 requiredstringvalidatorfield requiredstring trim true param 字串必填校驗 mes...