說明:該文翻譯自struts-2.0.8\docs\docs\validating-input.html。
在編寫Action這一章節中,我們通過幾行java代碼來驗證username和password。當然,在大型的應用程序中,這將是個很耗時的工作,即使這幾行java代碼也可能變成維護的重大負擔。
令人高興的是,本框架提供了一個驗證框架,這個驗證框架能夠對輸入數據進行后臺驗證。
一. 代碼
驗證能夠通過XML文檔來描述,或者使用注解(annotations)。XML文檔的名稱以Action的名字為開頭,以“-validation”作為文件名后綴。當我們想要驗證Logon Action的時候,我們文件名可以命名為Logon-validation.xml。Logon-validation.xml的代碼如下:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<message>Username is required</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>Password is required</message>
</field-validator>
</field>
</validators>
在Logon.java后我們創建一個Logon-validation.xml文件。并將上述粘貼到該文件中。
頁面第一次顯示的時候,我們不想引發驗證。我們需要在被告訴有輸入不正確前有機會輸入數據。通過驗證的一種方式是找到一個ActionSupport基類提供的特定的“input”方法。為了這樣做,我們需要編輯Welcome頁面和Logon的映射。
Welcome.jsp的修改代碼如下:
<li><a href="<s:url action="Logon"/>">Sign On</a></li>
<li><a href="<s:url action="Logon_input"/>">Sign On</a></li>
struts.xml的修改代碼如下:
<action name="Logon" class="tutorial.Logon">
<action name="Logon_*" method="{1}" class="tutorial.Logon">
二. 代碼是如何工作的?
為了打開Logon表單,Welcome頁面涉及了Logon_input。
1. 框架將這個引用于Logon_*映射相匹配起來;
2. “method={1}”屬性被“method=input”替換;
3. 框架調用了Logon Action類的input方法;
4. 因為“input”在一個特殊的方法的列表中,所以驗證框架將不會調用;
5. 默認的input方法返回一個“input”作為返回結果;
6. 框架展現“Logon.jsp”來作為回應結果,沒有帶有任何的驗證信息。
為了提交Logon表單,Login頁面引用了Logon。
1. 框架為目標Action——Logon提供驗證;
2. 找到Logon-validation.xml文件,框架為該類創建了一個驗證對象,這個驗證對象基于XML文件;
3. 驗證器對輸入的數據產生作用;
4. 如果驗證失敗,錯誤信息被添加到內部序列中;
5. 當所有的驗證器都已經執行后,如果框架發現有錯誤信息產生,它尋找“input”結果對應的頁面,而不調用Action類;
6. 如果通過驗證,調用Action的方法,返回“success”對應的結果。
三. 需要記住的東西
框架提供了一個驗證框架。一個輸入域可以綁定一個驗證器集合。如果驗證失敗,框架將會返回輸入信息頁,并顯示錯誤信息。為了通過驗證,一個特殊的“input”方法將被調用,來代替默認的“execute”方法。
下一章:本地化輸出
上一章:選擇結果
posted on 2007-08-01 08:49
阿蜜果 閱讀(3969)
評論(2) 編輯 收藏 所屬分類:
Struts2