2012-01-12 45 views
5

我只想應用某些@NotBlank註釋,如果其他字段爲false。在我目前的項目中,我們必須使用hibernate驗證器,所以沒有可用的commons validation + valang來解決這個問題。休眠驗證器 - 有條件地應用驗證器

因爲我不太喜歡創建多個自定義註釋來解決什麼應該是一件容易的事情(有點不爽,這不是JSR-303規範的一部分)我想知道如果有人知道一個可接受的方式來完成這一點。我發現一個罐子完成了,但是這是爲了休眠3.因爲變化...

回答

5

對於這種情況,建議的方法是使用類級別的約束,而不是字段或屬性級別。

請參閱Hibernate Validator Docs

我現在很是煩人。我有這樣的情況,並嘗試了像@NotEmpty(depends =「anotherField」),這是一個完全失敗。

也許一些其他成員知道另一種方法來做到這一點,但現在,我正在做Hibernate Validator所說的。

+0

說實話,在我看來,缺乏對這種情況的支持是我的JSR-303規範的寵兒之一。而且級別約束條件很好,但它們並沒有爲您提供和定製錯誤消息的靈活性。 – 2012-01-13 10:07:34

+1

同意,但我只是一個問題分離的問題。字段驗證特定於一個字段/屬性(空,空,大於X,低於Y)。這些是不可改變的驗證,不應該依賴系統的任何其他部分。你永遠不會與此混淆。否則,有人可能會在一個領域創建一個驗證瘋狂。 – Beccari 2012-01-13 14:32:15

+1

@Beccari如果我的情況是,如果field1 = true,則驗證另一個。假設我的其他字段是一個類對象,現在我只使用了@Valid。如果我要做這件事情,那麼我將不得不爲我自己的其他領域的驗證機制獨自編寫對嗎?我不能再使用@ @ Valid' – Kraken 2014-05-19 17:33:45