我知道這個問題更多是一個待討論的問題而不是被回答的問題,但我無法改變問題以使其更加具體。如何有效地重用JSF(1.2)頁面及其支持bean?
我目前正在開發基於JSF 1.2的頁面,並且正在考慮如何有效地重用部分頁面。我提出了以下想法(示例場景):
Page 3由三部分組成,對於頁面2也是如此。我將這三部分分別提取到不同的文件中,並將它們包含在第1頁和第2頁(使用<ui:include />
)。
因此,第1頁包括第1,2和3部分,第2頁包括第1部分,第2部分和第3部分(它們是相同的)。
在這一點上,我就在想如何重用的支持豆類和我想出了以下的想法:
每個頁面都有自己的後臺bean,我們稱之爲豆1(第1頁)和豆2 (用於第2頁)。
我爲每個零件定義了一個接口。所以我有一個接口(稱爲接口1)用於部分1,另一個接口(稱爲接口2)用於部分2等等。這些接口定義了其部分所需的所有方法。 F.ex.如果第1部分要求JSF站點(<h:outputText value="#{bean.test}" />
)中的屬性「test」(String
),則接口1定義了一個名爲public String getTest();
的方法。
所以我的基本思想是,如果頁面1包括第1部分,其支持bean(Bean 1)必須實現接口1。 在我的場景中,頁面1的支持bean將實現接口1,2和3. Page 2將實現接口1,2和3。
因此到目前爲止,支持bean的代碼仍然是多餘的,我想避免這種情況。 爲了解決這個問題,我爲接口1,2和3創建了抽象實現,稱爲Abstract Part 1等等。
這個抽象類將被Bean 1和2擴展。Bean 1和2只會覆蓋與抽象實現不同的方法(f.ex.負責加載數據的方法 - 在上面的示例public String getTest();
中可以是被重寫爲第1頁和第2頁提供不同的數據)。
所以我最終的解決方案是安靜的複雜。現在我的「問題」:這是重用支持bean的好方法嗎?有人有更好的解決方案嗎?
親切的問候
stupidSheep
感謝您的回答。你能解釋我如何處理一頁的各種支持豆嗎?即如果你有第1頁由3部分組成,並且每個部分都有它的bean,那麼就是第1頁。所以總的來說你有四個豆子。頁面1的bean如何訪問每個部分的bean(fragment *)?你如何處理這個問題? – stupidSheep 2012-02-04 14:39:32
我不給「部分」bean提供「頁面1」bean訪問權限。相反,如上所述,我給'部分'bean訪問'頁面1'bean的信息。 – 2012-02-06 19:42:37
如果你想要,你可以創建'Page 1'bean的'part'beans屬性,並將'part'bean作爲ui:param來傳遞給fragment。 – 2012-02-06 19:43:30