2014-01-21 58 views
0

我正在使用Jersey來開發我的REST Web服務。收集所有發生的錯誤/異常,並輸出它們

我試圖實施驗證,並且爲此我使用了與JSR-303 Bean驗證澤西提供的出色集成。

然後我定義一個ExceptionMapper來輸出我想從發生的錯誤。問題在於有時,異常不會發生在Bean驗證的上下文中。

實施例:

客戶端發送一個無效值時的浮子(例如 「ABC」)。傑克遜拋出一個異常,因爲它無法將給定的JSON解析爲浮點值。這是預料之中的。

我可以爲這個異常寫一個ExceptionMapper並輸出給客戶端。 但是,我想要的是收集所有這些不同的異常來自各種來源,並將它們全部輸出。換句話說,我想輸出解析過程中發生的錯誤,並從Bean驗證中輸出相同的響應,而不是單獨的錯誤。

有什麼辦法可以收集所有的異常,並最終輸出它們嗎? 我假設的第一個問題是,在Jackson正確解析請求之前,Bean Validation永遠不會發生。

回答

0

正如你猜測的那樣,沒有辦法做到這一點,因爲例外發生在不同的時間。如果JSON無效,則Jersey無法繼續,因此不會進行bean驗證。

+0

所以沒有辦法做到這一點? 令人失望。 :/ 客戶端驗證將不得不按照它應該的方式來處理... – miguelcobain

+0

他們是非常不同的東西。從邏輯上講,如果JSON不解析,那麼你如何期望澤西島繼續? – jgm

+0

有道理,但json本身**是**有效的。這只是一個普通的字符串。問題是給定的字符串不是有效的float。 我希望能夠捕獲這個異常,將字段設置爲null,然後繼續進行bean驗證,然後在一個響應中輸出所有錯誤。 我承認,這是一個很大的挑戰。 – miguelcobain

相關問題