繁体   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