我在用spring mvc 使用struts 的validation是出現這樣的錯誤:
org.apache.commons.validator.ValidatorException: org.apache.struts.validator.FieldChecks
這是因爲在spring使用validation的時候是用了spring module,而validator-rules.xml並沒有用spring module的東西,而是直接用了struts的版本,就是出現了org.apache.struts.validator.FieldChecks找不到異常或者其他的異常,原因在於classname的不同,如下。通過這個,我發現最好的文檔還是各種包裏面自帶的文檔說明了....
下面我就簡述一下spring 如何使用validation的。
首先有兩個配置文件,一個是上面提到的validator-rules.xml,對於這個文件的版本很重要,因爲不同版本間的實現類是不一樣的,具體可以看classname的實現類。在我說的這種情況下就應該用spring module下的自帶的。另外一個就是validation.xml,這個是針對不同的form name 進行驗證的字段配置。具體可以參看相應的文檔。
spring validation針對command對象分爲全部字段驗證和部分字段驗證。
如果是全部字段驗證的話contorller類繼承SimpleFormController就可以,然後在controller類裏面設置屬性:
這樣就可以了。配置相對簡單。
如果是部分字段驗證controller類繼承AbstractWizardFormController,然後在配置文件裏做類似如下配置:
以上兩種都需要配置: