WebWork驗證機制雜談
自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支持的客戶端驗證類型有:
◆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標簽,
主要是獲取顯示錯誤是的樣式。
2、使用
在
- 〈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é)果是不一樣的。
***種寫法會在頁面上生成相應的WebWork驗證機制規(guī)則。
第二種寫法生成的Js,只是簡單清楚報錯信息然后提交請求到服務器,由服務器來驗證。
只需要這三步,Webwork2.2.2的客戶端驗證功能就算是使用了。
現(xiàn)在編輯是使用FCKEditor,另外可以看Webwork的Showcase。這東西太出彩了。
【編輯推薦】