2012-01-30 120 views
2

我是JSF中的新成員,不確定一些基本問題。bean和jsf驗證註釋inisde託管bean vs實體bean

我發現我有幾種方法來定義我的輸入字段的驗證,但我不確定哪種方法是正確的。

我通過使用ExtVal使用bean驗證和jsf驗證。

我應該在我的實體bean中使用像@Size , @Length這樣的驗證註釋,還是應該在託管bean中?每個選項有什麼不同?

這個問題讓我想到了一個更基本的問題,但我仍然不太明白 - 我有一個實體bean,其中包含字段及其setter和getters,還有一個託管bean和一個帶有窗體的xhtml文件顯示輸入內的文件。
我應該在託管bean中使用它們的getter和setter來定義相同的字段嗎?當從xhtml文件接近他們時,我通過MBname.FiledName來做到這一點?或者最好不要在託管bean中再次創建字段,並通過調用MBname.details.FiledName(當細節返回對象時)從xhtml接受它們? 又是什麼是每個接近的差異?

感謝提前。

回答

4

我應該在我的實體bean中使用像@Size,@Length這樣的驗證註釋,還是應該在託管bean中?每個選項有什麼不同?

取決於具體的功能要求。關鍵是:驗證應該如何重複使用?如果在實體級別配置,則對於除JSF以外的所有框架都可重用。如果在JSF級別進行配置,那麼對於JSF以外的其他框架而言,它們不可重複使用,而這些框架碰巧使用相同的實體。


我應該定義他們的getter和setter的管理bean中的字段相同?當從xhtml文件接近它們時,我通過MBname.FiledName來完成它?或者最好不要在託管bean中再次創建字段,並通過調用MBname.details.FiledName(當細節返回對象時)從xhtml接受這些字段?又是什麼是每個接近的差異?

您不應在控制器中複製/擴展數據模型。這沒有意義。這不是DRY,因此只是維修頭痛。

+0

謝謝,所以使用'MBname.details.FiledName'是查看對象字段的正確方法嗎? – user590586 2012-01-30 13:26:40

+0

是的,除非由於某些技術原因,您真的*需要將模型屬性複製到控制器中。但如果沒有有效的技術原因,沒有理由複製代碼。 – BalusC 2012-01-30 13:57:49