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...