0

我有一个带有 RichFaces 4.5.8 的 JSF 应用程序、用于 CDI bean 的 deltaspike 以及在 EAP 6.3 中运行的 EJB。我有一个包含两个表格和几个 popupPanel 的页面。该页面由 WindowScope 中的 CDI bean 控制器支持。现在页面变得越来越大,因为 popupPanels 有很多控件和操作。

xhtml 页面由复合组件和 ui:include 分隔,工作正常,但 CDI bean 变得越来越大。我想将 popupPanels 的操作方法移到其他 CDI bean 中,但对我来说,在一页中有多个 windowScoped CDI bean 听起来很奇怪。您将如何拆分大型 CDI bean?

此致

4

1 回答 1

1

@DarWhi 的评论是正确的 - 您可以在页面中使用任意数量的 WindosScoped bean,所有这些bean 都只能使用一个窗口。没有限制,您必须在 JSF 页面中仅使用单个 bean。您只需要使用 @Named 为所有此类 bean 命名。

如果您希望每个窗口只有一个 WindowScoped bean,您仍然可以将您的逻辑分成多个 bean。只需将所有子 bean 注入 WindowScoped bean,然后使用点符号引用子 bean 中的操作:#{viewScopedBean.childBean.action。您可以使用变量来存储对 childBeans 的引用并使 JSF 中的代码更短,请参阅此答案

于 2015-08-30T06:27:08.390 回答