2013-12-13 102 views
7

我有一個Java Server Faces Web應用程序,我不確定如何處理驗證。Java服務器Faces:僅在業務邏輯層驗證

我認爲驗證應該在商業邏輯層進行。業務邏輯層用於Web演示文稿(jsf)和REST-API內部。

此刻我也在使用提供的驗證器在jsf圖層中進行驗證。我認爲大多數情況下只是重複代碼。有什麼辦法可以避免這種代碼重複? java服務器端是否能夠使用我在業務邏輯層中引發的驗證異常?

回答

5

Bean Validation已經發明瞭這種情況。

您使用約束對實體進行註釋,這些約束將由您的業務邏輯(通過EJB,CDI和/或JPA)以及JSF來承認。

對於通過Bean驗證無法表達的少量驗證,但確實與業務關聯;是的,拋出一個異常,將其捕獲到你的後臺bean中,並設置相應的Faces消息(提示:使用OmniFaces' Messages使這更容易)。同樣,對於Bean Validation無法表達的少量驗證,以及強烈的面向視圖的驗證;使用JSF本地驗證器。