簡體   English   中英

如何有效地重用JSF(1.2)頁面及其支持bean?

[英]How to efficiently reuse JSF (1.2) pages and their backing beans?

我知道這個問題更多的是要討論的問題,而不是要回答的問題,但是我無法重新表述這個問題以使其更加具體。

我目前正在開發基於JSF 1.2的頁面,並且正在考慮如何有效地重用部分頁面。 我提出了以下想法(示例方案):

第1頁由三部分組成,第2頁也是如此。我將這三部分提取到單獨的文件中,並將它們包括在第1頁和第2頁中(使用<ui:include /> )。

因此,第1頁包含第1部分,第2部分和第3部分,而第2頁包含第1部分,第2部分和第3部分(它們是相同的)。

在這一點上,我正在考慮如何重用支持bean,並且提出了以下想法:

每個頁面都有其自己的支持Bean,我們將其稱為Bean 1(針對第1頁)和Bean 2(針對第2頁)。

我為每個零件定義一個接口。 因此,我為第1部分有一個接口(稱為接口1),為第2部分有第二個接口(稱為接口2),依此類推。 這些接口定義了其所需的所有方法。 F.ex. 如果第1部分在JSF站點( <h:outputText value="#{bean.test}" /> )中要求屬性“ test”(一個String ),則接口1定義一個稱為public String getTest();

因此,我的基本思想是,如果Page 1包含第1部分,則其后備bean(Bean 1)必須實現接口1。在我的場景中,第1頁的后備bean將實現接口1、2和3。第2頁將實現接口1。 ,2和3。

因此,到目前為止,支持Bean中的代碼仍然是多余的,我想避免這種情況。 為了解決這個問題,我為接口1、2和3創建了抽象實現,稱為抽象第1部分,依此類推。

Bean 1和2將擴展此抽象類public String getTest();和2將僅覆蓋與抽象實現不同的方法(例如負責加載數據的方法-在上面的示例public String getTest();可以被覆蓋以為第1頁和第2頁提供不同的數據)。

因此,我的最終解決方案是安靜復雜。 現在我的“問題”是:這是重用支持bean的好方法嗎? 有沒有更好的解決方案?

親切的問候

笨羊

如果要創建要在多個頁面中重復使用的頁面片段*,通常會為該片段創建一個支持bean,然后通過params(和Seam DI,但可能不可行)將所需的任何上下文信息傳遞給該片段為了你):

<ui:include scr="/common/myfragment.xhtml">
    <ui:param name="property" value="#{pageBean.property}" />
</ui:include>

這樣,您的Page bean不需要實現任何片段功能。

*很抱歉使用術語片段,我所說的不是<ui:fragment>而是頁面的任意部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM