WebWork2.2新特性(二):數據校驗 validator

          除經特別注明外,本站文章版權歸JScud Develop團隊或其原作者所有.
          轉載請注明作者和來源.  scud(飛云小俠)    歡迎訪問 JScud Develop



          WebWork2.2中去掉了原來的JavaScript支持,使用AJAX和DWR進行客戶端校驗.

          DWR最新版本為1.0RC3a(2005-8-29),Webwork里面帶的是0.6的版本.

          如果使用客戶端校驗,首先在Web.xml里配置DWR:

              <servlet>
                  <servlet-name>dwr</servlet-name>
                  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
                  <init-param>
                      <param-name>debug</param-name>
                      <param-value>true</param-value>
                  </init-param>
              </servlet>

              <servlet-mapping>
                  <servlet-name>dwr</servlet-name>
                  <url-pattern>/dwr/*</url-pattern>
              </servlet-mapping> 



          validators.xml的寫法和原來一樣,不過就是不能用原來的JavaScript的校驗了(如果使用默認的validator,不需要這個文件)

           <validators> 
               <validator name="required"
                   class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>
                  
               <validator name="requiredstring"
                   class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>
           
               <validator name="stringlength"
                class="com.opensymphony.xwork.validator.validators.StringLengthFieldValidator"/>      
           </validators>

           

          對action的校驗規則寫法也是和原來一樣,例如增加新聞的校驗如下:

           <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
           <validators>
            <field name="news.title">
             <field-validator type="requiredstring">
              <message>請輸入標題</message>
             </field-validator>
            </field> 
            <field name="news.content">
             <field-validator type="requiredstring">
              <message>請輸入內容</message>
             </field-validator>
            </field>
            
           </validators>  



          在頁面的Form標簽中寫上validate="true" (注意使用的是alt syntax語法)表示需要進行客戶端校驗,
          如果不寫validate="true"則不需要進行客戶端校驗,僅進行服務器端校驗,這就和DWR無關了,和以前的客戶端校驗一樣.

          <ww:form action="doAddNews" method="post" name="doAddNews" validate="true"> 

           
           
          還需要在WEB-INF下面增加一個dwr.xml配置DWR,如果使用webwork自帶的dwr,格式如下

           <?xml version="1.0" encoding="UTF-8"?>
           <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN" "http://www.getahead.ltd.uk/dwr/dwr.dtd">
           <dwr>
               <allow>
                   <create creator="new" javascript="validator" class="com.opensymphony.webwork.validators.DWRValidator"/>
                   <convert converter="bean" match="com.opensymphony.xwork.ValidationAwareSupport"/>
               </allow>
           </dwr> 


          如果使用DWR 1.0r3a(用新的版本不知道有沒有問題),格式如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
          <dwr>
           <allow>
            <create creator="new" javascript="validator" >
            <param name="class" value="com.opensymphony.webwork.validators.DWRValidator" />
            </create>
            <convert converter="bean" match="com.opensymphony.xwork.ValidationAwareSupport"/>
           </allow>
          </dwr> 

          (注:一定要使用匹配dwr和dwr.xml,否則會報錯)


          通過查看頁面Html源碼,我們可以看到頁面中包含了/webwork和/dwr的路徑,這些路徑由Webwork和DWR自動生成文件返回,避免了在每個項目中復制重復的文件.

          <script src="/ww22test/webwork/validationClient.js"></script>
          <script src="/ww22test/dwr/interface/validator.js"></script>
          <script src="/ww22test/dwr/engine.js"></script>
          <script src="/ww22test/webwork/template/xhtml/validation.js"></script> 


          其中字段使用onblur來進行調用校驗:

          <input type="text" name="news.title" value="" id="doAddNews_news.title" onblur="validate(this);"/> 

          至此,Webwork的客戶端校驗可以運行起來了.

          (實際操作中,DWR的校驗可能還會有些問題,等待開發人員來進行修正了)

          BUG發現:

          目前發現當表單元素的名字沒有.的時候(例如是"name"),DWR校驗器工作正常,而如果類似上面的表單元素名字類似news.title,校驗器工作不正常.

          不知道是DWR的問題還是WebWork的問題,需要研究一下...

           

          posted on 2005-08-29 18:50 Scud(飛云小俠) 閱讀(1664) 評論(2)  編輯  收藏 所屬分類: WEB

          評論

          # re: WebWork2.2新特性(二):數據校驗 validator 2005-10-21 00:14 scud(飛云小俠)

          bug已經修正,或者是我看錯了.反正好了.  回復  更多評論   

          # re: WebWork2.2新特性(二):數據校驗 validator 2007-03-30 15:45 jetty

          如果沒有用WebWork,就簡單的jsp 可以用DWR技術 實現驗證嗎?
          可以發郵件:xlm_hz@126.com
            回復  更多評論   

          <2005年8月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          公告

          文章發布許可
          創造共用協議:署名,非商業,保持一致

          我的郵件
          cnscud # gmail


          常用鏈接

          留言簿(15)

          隨筆分類(113)

          隨筆檔案(103)

          相冊

          友情鏈接

          技術網站

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 保康县| 诸暨市| 巴彦淖尔市| 岐山县| 如皋市| 江陵县| 贵州省| 临沧市| 长沙县| 沁阳市| 雷州市| 潜江市| 夏邑县| 台州市| 历史| 彭山县| 凤阳县| 积石山| 民县| 新巴尔虎右旗| 西盟| 广州市| 瓮安县| 上虞市| 郴州市| 麟游县| 岱山县| 阳谷县| 永福县| 永德县| 托克逊县| 江阴市| 佛山市| 禹城市| 清丰县| 巢湖市| 盘山县| 张北县| 岑巩县| 中牟县| 五常市|