2013-05-20 147 views
1

我下面的問題混合註釋和驗證爲基礎的驗證,有一個普通彈簧模型(我們稱之爲「A」)與一些驗證相關的註解。接下來,有一個命令對象(定義一些字段的常規POJO類,其中一個是A類對象)。命令對象實現Validator接口,以便在控制器方法中進行綁定和驗證。春天 -

的問題是,如何利用該命令對象內部註解配置驗證的(給定它實現驗證程序接口,因此它具有支承件()和驗證()方法)。

我試圖才達到是有被重用,與系統的其他部分的一些較重的業務邏輯驗證的混合模型基本驗證。

回答

6

我有完全相同的問題。我想對「簡單的事情」使用自動註釋驗證,然後將複雜的驗證邏輯傳遞給我的自定義彈簧驗證器。但每當我設置控制器的驗證,所有的Hibernate的驗證停止工作,因爲在本教程的最後描述:

http://www.captaindebug.com/2011/07/applying-custom-spring-validator-to.html#.VQR0OI7F-gd

這種技術時,你需要做的所有的 控制器的驗證,應使用你不能或不想讓 使用Hibernate的JSR 303 驗證器的參考實現。 由此看來,你會猜,你不能使用Hibernate的JSR 303驗證調配自己的自定義 春天驗證。例如, 添加內置註釋地址命令對象將 沒有任何效果:

你應該忘記老式彈簧驗證,並刪除「setInitBinder()」作爲此相關的問題描述:

Spring MVC validator annotation + custom validation

然後,您應該只依靠休眠驗證和JSR303。

要在複雜的驗證添加到您的類(模型),說要檢查兩個日期字段 - 使用自定義的註釋約束的一流水平,如下面的鏈接描述。

https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/validator-customconstraints.html#section-class-level-constraints

希望這有助於。

最好的問候, 亞歷山大

0

一次看這可能這個幫助你 Using both JSR-303 and Traditional Bean Validation?。在那裏我給出了一個使用自定義註釋爲模型進行自定義驗證的例子。

+0

是啊,我見過的鏈接(從問題接受你掛) - http://blog.trifork.com/2009/08/04/bean-validation-然而,集成-jsr-303-with-spring /之前,我無法讓它工作。使用的代碼比當前實現舊,API已更改。將這兩種驗證方法合在一起可能有新的方法。 – WTK