在 windowscope 中拆分 CDI bean 以分离关注点
Split CDI bean in windowscope for separation of concerns
我有一个 JSF 应用程序,其中包含 RichFaces 4.5.8、用于 CDI bean 的 deltaspike 和在 EAP 6.3 中运行的 EJB。我有一个包含两个表和几个弹出面板的页面。该页面由 WindowScope 中的 CDI bean 控制器支持。现在页面越来越大,因为popupPanels有很多控件和动作。
xhtml 页面由复合组件和 ui:include 分开,这工作正常,但 CDI bean 变得越来越大。我想将 popupPanels 的操作方法移动到其他 CDI bean 中,但对我来说,在一个页面中有多个 windowScoped CDI bean 听起来很奇怪。
您会如何拆分大型 CDI bean?
此致
@DarWhi 的评论是正确的——您可以在页面中使用任意数量的 WindosScoped bean,所有这些 bean 都只能与一个 window 一起使用。没有限制您只能在 JSF 页面中使用单个 bean。您只需要使用@Named 为所有此类 bean 命名。
如果您更喜欢每个 window 只有一个 WindowScoped bean,您仍然可以将您的逻辑分成多个 bean。只需将所有子 bean 注入 WindowScoped bean,然后使用点符号在子 bean 中引用操作:#{viewScopedBean.childBean.action
。
您可以使用变量来存储对 childBeans 的引用并使您在 JSF 中的代码更短,请参阅此 answer.
我有一个 JSF 应用程序,其中包含 RichFaces 4.5.8、用于 CDI bean 的 deltaspike 和在 EAP 6.3 中运行的 EJB。我有一个包含两个表和几个弹出面板的页面。该页面由 WindowScope 中的 CDI bean 控制器支持。现在页面越来越大,因为popupPanels有很多控件和动作。
xhtml 页面由复合组件和 ui:include 分开,这工作正常,但 CDI bean 变得越来越大。我想将 popupPanels 的操作方法移动到其他 CDI bean 中,但对我来说,在一个页面中有多个 windowScoped CDI bean 听起来很奇怪。 您会如何拆分大型 CDI bean?
此致
@DarWhi 的评论是正确的——您可以在页面中使用任意数量的 WindosScoped bean,所有这些 bean 都只能与一个 window 一起使用。没有限制您只能在 JSF 页面中使用单个 bean。您只需要使用@Named 为所有此类 bean 命名。
如果您更喜欢每个 window 只有一个 WindowScoped bean,您仍然可以将您的逻辑分成多个 bean。只需将所有子 bean 注入 WindowScoped bean,然后使用点符号在子 bean 中引用操作:#{viewScopedBean.childBean.action
。
您可以使用变量来存储对 childBeans 的引用并使您在 JSF 中的代码更短,请参阅此 answer.