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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章