我一直在考慮這個問題,現在還沒有想出如何在表示層的JSF項目中組織我的bean/classes的最佳實踐。顯然有很多因素起作用,但我想討論一下。這裏是我目前的思路:在JSF中支持Bean組織
考慮一個基本的JSF(仍然堅持在JSF 1.xx這裏不幸)包含一個視圖頁面(查看數據)和一個編輯頁面(添加,更新,刪除數據)。這裏是我會組織項目:
請求範圍BackingBean:
- 查看相關的東西(保存狀態,繪製邏輯等)。僅在一個請求中需要的東西
- 動作,動作偵聽器和值更改偵聽器。如果它們適用於多個視圖,則可以將它們分離爲它們自己的文件。
會話範圍BackingBean:
- 任何需要將保持在超過一個請求。數據庫中的數據,一個SelectItems等
- 這個bean被注入到請求Bean,任何數據的存儲實例對象
數據對象:
- 它似乎沒有任何意義使數據對象變成bean,因此它們被分開存儲。這可能是用戶,書籍,汽車以及您要在頁面上顯示的任何對象。所述對象可包含視圖助手方法以及如getFormattedName()等
DAO:
- 非bean對象處理與業務邏輯層的所有交互。它加載數據bean並準備提交等。我通常將其作爲一類公共靜態方法。
轉換器,驗證:
- 單獨的文件
這似乎是所有需要在你的平均JSF應用程序。我已閱讀了這個:http://java.dzone.com/articles/making-distinctions-between,以及這裏的答覆:JSF backing bean structure (best practices),但我從來沒有覺得我們有一個完整的圖片。 BalusC的迴應很有幫助,但似乎沒有涵蓋完整的應用程序。讓我知道你的想法!
這不是我是誰回答了這個問題。更重要的是,我個人不同意這個答案。也http://stackoverflow.com/questions/7223055/distinction-between-different-types-of-managed-beans見爲了補充這個答案,你可能會發現下面的答案有幫助:http://stackoverflow.com/questions/ 7031885 /如何選擇正確的bean範圍True,JSF 2.x,但同樣的原則適用於JSF 1.x。 – BalusC
第一個鏈接是我的意思鏈接。儘管如此,我仍然遇到了一些麻煩。如果我理解正確的,你的模型bean是類似我的數據對象,和你說的控制器/託管bean應該是一個豆,類似我backingbean,雖然我以儘量減少會議的數量把它分解成兩個數據。這是否準確? – bhouse