像一顆晨土

          常用鏈接

          統計

          blogs

          life

          最新評論

          Webwork2.2.2 重返Client Validation

                  自Webwork2.2發布以后,Webwork的驗證機制就全部改由Ajax驗證。驗證的原理是一個需要驗證的表單域在onblur時發送一次請求到服務器端進行驗證,然后實時提醒。雖然這樣達到驗證目的,但在我看來,這惡心死了。如果我有一個表單幾十個域需要驗證,我在各個域之間切換的話,我的服務器還不累得夠嗆?可憐原來有的客戶端驗證功能沒了。。我只好手寫Javascript了。。
                 到了Webwork2.2.2這個版本,有個好消息來了。Webwork重新支持客戶端驗證。于是馬上搶先試了試。

                 客戶端驗證的例子可見Webwork自還的例子“showcase”。使用客戶端驗證大體上跟以前的服務器端驗證相似,只是多了一些步驟。完整的有以下幾個步驟:
                 一、編寫XXXAction-alias-validation.xml--驗證配置文件。文件放在需要驗證的Action類同一目錄下,alias是可選項,如果有幾個Action使用了同一個Action類。而你想對其中一個Action進行驗證,那么alias就是那個Action的名字。如:PersonAction.java,被editPerson,savePerson,deletePerson等Action使用到,而僅需要對savePerson這個動作來驗證時,配置文件名字就是:PersonAction-savePerson-validation.xml。Webwork支持的客戶端驗證類型有:
          • required validator
          • requiredstring validator
          • stringlength validator
          • regex validator
          • email validator
          • url validator
          • int validator
          • double validator

                 二、配置Xwork.xml,保證攔截器棧里有Validation的攔截器
                 三、編寫Jsp(VM或FTL)。這里有幾個需要注意的地方。
                 1.在Jsp加上一個Head標簽,<ww:head/>的結果是生成兩個Css樣式的鏈接:
          <link rel="stylesheet" href="/bean/webwork/xhtml/styles.css" type="text/css"/>
          <link rel="stylesheet" href="/bean/webwork/jscalendar/calendar-blue.css" type="text/css"/>
          主要是獲取顯示錯誤是的樣式。
                 2、使用<ww:form>,很遺憾我們只能夠用Webwork的UI標簽,這樣才能使用到她的客戶端驗證機制。在這里要抱怨一下。。<ww:form>的標簽是挺方便,但是在特定的場合,我們必須使用自已的樣式和風格的布局。而Webwork默認的XHTML主題的標簽會把布局搞亂。當然,我可以使用Simple主題的。但是在需要客戶端驗證的時候,Simple主題是行不通的。也就是說要求主題必須是XHTML以上。。或者自定義的主題(自已提供錯誤信息報告功能)。呵。沒辦法,先將就著用XHTML吧。
                 在<ww:form>的標簽里使用namespace 及Action屬性。如果你的Action是/foo/bar/new.action那么,你必須這樣寫:
                 <ww:form namespace="/foo/bar" action="new"  validate="true"/>
          validate="true"一句將會在客戶端生成一句:
             <script src="/bean/webwork/xhtml/validation.js"></script>
          如果你這樣寫:
                 <ww:form action="/foo/bar/new.action" validate="true"/>,你將得不到客戶端驗證。要注意,這個細節不容忽視。我被這個小問題搞大頭了。后來查文檔的時候才知道Webwork已經提醒我們要像上一種寫法那樣寫。因為她要知道哪個名字空間下的哪個Action需要被驗證!看吧。這是心急的錯。不看文檔后果就自負。
                 以上兩種寫法,在頁面上生成Js的結果是不一樣的。第一種寫法會在頁面上生成相應的驗證規則。第二種寫法生成的Js,只是簡單清楚報錯信息然后提交請求到服務器,由服務器來驗證。

                 只需要這三步,Webwork2.2.2的客戶端驗證功能就算是使用了。感覺還不錯。唯一納悶的還是Webwork強制我什么使用她的模板。
                 Ps:有很多示例代碼沒同貼出來,是有原因D。現在編輯是使用FCKEditor,另外兩個Editor在我的機子上變成了白癡。出錯、完全不能編輯。。。手上又沒有好的“XML到 HTML”的好工具。。所以沒把代碼貼上來。。詳情,可以看Webwork的Showcase。這東西太出彩了。:P

          posted on 2006-03-30 16:47 艾塵 閱讀(2483) 評論(9)  編輯  收藏 所屬分類: pick up

          評論

          # re: Webwork2.2.2 重返Client Validation 2006-05-29 16:35 wangxq

          我想請問一下目前的版本dtd似乎根本不能識別<ww:head/>。您是怎么加上去并使用的。  回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-05-29 16:39 艾塵

          目前版本DTD?
          你只需要用2.2.2的標簽定義文件就得了。webwork.tld
            回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-05-29 16:51 wangxq

          我用的WW-EXAMPLE里面的webwork.tld,結果沒有關于<ww:head/>標簽的定義,能不能幫幫我,我就差這口氣就可以活了。  回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-05-29 16:53 艾塵

          請確定你的WW版本是2.2.2。不然沒戲演。  回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-05-29 17:13 wangxq

          謝謝你,確實是這個原因,我大頭了。不好意思。因為官方網站上給的WW-EXAMPLE例子是在2.1.7的包,我拿這個例子的包去跑2.2.2的例子,肯定跑不動了。而且經過我試驗,若僅僅是只替換一下jar包的版本,整個環境就跑不起來了。請問你有沒有哪里看到關于2.2.2的例子提供下載學習的。再次感謝,好心的人。  回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-05-29 17:24 艾塵

          官方的發行版就帶有很精彩的例子。 :)  回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-06-06 09:17 Tin

          修改webwork的模版的確是煩人的事,不過還好那些ftl不算太復雜。xhtml theme絕對垃圾,一定要擴展自己的simple。  回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-09-15 15:40 HelloX

          注意這個帖子很久了,而且還加入了收藏夾,今天又看了一下,注意到樓主很耐心的幫助解答,再不回帖就說不過去了。頂一個。  回復  更多評論   

          # re: Webwork2.2.2 重返Client Validation 2006-10-29 11:34 HelloX

          求助! 在成功實現Webwork2.2.2的Client Validation后,出現了新的問題。
          出錯的信息累積顯示在頁面上,驗證一次,如果出錯信息,再疊加在原來的出錯信息上,很郁悶。求救  回復  更多評論   

          主站蜘蛛池模板: 胶州市| 明水县| 新郑市| 安远县| 安吉县| 汾阳市| 临安市| 四会市| 肃南| 沁水县| 梁河县| 新兴县| 莱芜市| 兴国县| 洛浦县| 项城市| 哈密市| 邵东县| 台南县| 罗平县| 左云县| 泸溪县| 湘西| 本溪市| 顺昌县| 资源县| 美姑县| 吐鲁番市| 嘉定区| 中山市| 武威市| 太原市| 肇东市| 新乡县| 绥江县| 新泰市| 阿巴嘎旗| 克拉玛依市| 厦门市| 卢湾区| 堆龙德庆县|