posts - 297,  comments - 1618,  trackbacks - 0
                說明:該文翻譯自struts-2.0.8\docs\docs\validating-input.html

                在編寫Action這一章節中,我們通過幾行java代碼來驗證usernamepassword。當然,在大型的應用程序中,這將是個很耗時的工作,即使這幾行java代碼也可能變成維護的重大負擔。

               令人高興的是,本框架提供了一個驗證框架,這個驗證框架能夠對輸入數據進行后臺驗證。

          一.             代碼

               驗證能夠通過XML文檔來描述,或者使用注解(annotations)。XML文檔的名稱以Action的名字為開頭,以“-validation”作為文件名后綴。當我們想要驗證Logon Action的時候,我們文件名可以命名為Logon-validation.xmlLogon-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 阿蜜果 閱讀(3971) 評論(2)  編輯  收藏 所屬分類: Struts2


          FeedBack:
          # re: Struts2學習進階(六)——驗證輸入值
          2007-08-01 12:12 | dreamstone
          不知道現在struts2的商業應用廣泛不。  回復  更多評論
            
          # re: Struts2學習進階(基礎篇六)——驗證輸入值
          2007-08-06 09:35 | Adma
          關于驗證xml的文件可以這樣命名
          該類名-別名(定義的action名)-validation.xml
          這樣的話,可以針對每個不同的業務進行數據驗證。
            回復  更多評論
            
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2296322
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大港区| 绥阳县| 阳城县| 墨竹工卡县| 荃湾区| 日照市| 巴林左旗| 揭阳市| 巴彦淖尔市| 桂东县| 海晏县| 巴楚县| 尉犁县| 和田市| 喀喇| 山阳县| 苍溪县| 江安县| 丰城市| 万安县| 客服| 瑞丽市| 郓城县| 三河市| 南部县| 尤溪县| 泽库县| 荆州市| 金湖县| 安龙县| 嵊州市| 石泉县| 高碑店市| 红原县| 石屏县| 呼伦贝尔市| 清水县| 永德县| 抚州市| 无锡市| 秭归县|