自Webwork2.2發(fā)布以后,Webwork的驗證機制就全部改由Ajax驗證。驗證的原理是一個需要驗證的表單域在onblur時發(fā)送一次請求到服務器端進行驗證,然后實時提醒。雖然這樣達到驗證目的,但在我看來,這惡心死了。如果我有一個表單幾十個域需要驗證,我在各個域之間切換的話,我的服務器還不累得夠嗆?可憐原來有的客戶端驗證功能沒了。。我只好手寫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支持的客戶端驗證類型有:
二、配置Xwork.xml,保證攔截器棧里有Validation的攔截器 三、編寫Jsp(VM或FTL)。這里有幾個需要注意的地方。 1.在Jsp加上一個Head標簽,<ww:head/>的結(jié)果是生成兩個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以上。?;蛘咦远x的主題(自已提供錯誤信息報告功能)。呵。沒辦法,先將就著用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"/>,你將得不到客戶端驗證。要注意,這個細節(jié)不容忽視。我被這個小問題搞大頭了。后來查文檔的時候才知道Webwork已經(jīng)提醒我們要像上一種寫法那樣寫。因為她要知道哪個名字空間下的哪個Action需要被驗證!看吧。這是心急的錯。不看文檔后果就自負。 以上兩種寫法,在頁面上生成Js的結(jié)果是不一樣的。第一種寫法會在頁面上生成相應的驗證規(guī)則。第二種寫法生成的Js,只是簡單清楚報錯信息然后提交請求到服務器,由服務器來驗證。 只需要這三步,Webwork2.2.2的客戶端驗證功能就算是使用了。感覺還不錯。唯一納悶的還是Webwork強制我什么使用她的模板。 Ps:有很多示例代碼沒同貼出來,是有原因D?,F(xiàn)在編輯是使用FCKEditor,另外兩個Editor在我的機子上變成了白癡。出錯、完全不能編輯。。。手上又沒有好的“XML到 HTML”的好工具。。所以沒把代碼貼上來。。詳情,可以看Webwork的Showcase。這東西太出彩了。:P |
|
來自: 耍庫 > 《吳延峰個人圖書館》