在Windowscope中拆分CDI bean以分离关注点

时间:2015-08-28 07:47:24

标签: jsf cdi deltaspike

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

xhtml页面由复合组件分隔,ui:include的工作正常,但CDI bean变大了。我想将popupPanel的动作方法移动到其他CDI bean中,但对我来说,在一个页面中有几个windowScoped CDI bean听起来很奇怪。 你会怎么做才能拆分大型CDI bean?

祝你好运

1 个答案:

答案 0 :(得分:1)

@ DarWhi的评论是正确的 - 您可以根据需要在页面中使用尽可能多的WindosScoped bean,所有这些bean只能在一个窗口中使用。没有限制,您必须在JSF页面中仅使用单个bean。你只需要使用@Named为所有这些bean命名。

如果您希望每个窗口只有一个WindowScoped bean,您仍然可以将逻辑分成多个bean。只需将所有子bean注入WindowScoped bean,然后使用点表示法引用子bean中的操作:null。 您可以使用变量来存储对childBeans的引用,并使您的JSF代码更短,请参阅此answer