2015-03-03 161 views
1

現在練習了定製的hibernate驗證器之後,我想了解更多。衆所周知,定製休眠註釋可以由一個或多個ConstraintValidator<T extends Annotation, X>驗證,具體取決於X的數據類型。驗證取決於其他驗證器的自定義驗證器

我在想,如果我能創造這將取決於特定的bean類配對約束驗證器(@FooTwo@FooThree)中選擇幾個ConstraintValidator(爲@FooOne)。例如:

@FooOne 
@FooTwo 
private String fooField; 

@FooOne 
@FooThree 
private String anotherFooField; 

回答

0

不,你不能。這會違反「ConstraintValidator分辨率算法」。另請參閱Bean驗證規範 - http://beanvalidation.org/1.1/spec/#typevalidatorresolution

如果對於同一類型有兩個以上(最具體的)約束驗證器實現,則會引發異常。

+0

我明白了。然而,會不會有其他的選擇? – 2015-03-04 08:40:39

+0

這取決於你的用例。你想要達到什麼目標? – Hardy 2015-03-04 08:58:08

+0

基本上,如果添加了另一個特定的自定義註釋,我希望自定義註釋從其驗證器列表中調用一個「ConstraintValidator」,其中選定的驗證器將被選中。就像'@ FooOne'會爲'fooField'調用'FooOneFooTwoValidator',併爲'anotherField'調用'FooOneFooTwoValidator'。 – 2015-03-05 02:15:04