【发布时间】:2013-12-09 09:38:30
【问题描述】:
我想模块化我的 JSF 2.1 / Java EE 应用程序。我有一个由几个模块组成的页面。每个模块都应该使用一个单独的 JSF 支持 bean。其中一些模块需要显示和更改来自/关于同一实体的一些数据。
我已经尝试了一些方法,但到目前为止我并不满意。我问自己最好的方法是什么?
所有模块都使用相同的实体,如果某些数据发生了变化,它们(可能)需要通知其他支持 bean。
对我已经尝试过的一些方法的评论:
- 通过接口将实体传递给我的组件 (XHTML) 也不会将它传递给支持 bean
- 通常不鼓励通过从请求参数中读取 id 在 bean 的 postContruct 方法中加载实体,而建议使用“viewParam”方法
- 恕我直言,使用“viewParam”不如在创建 bean 后使用实体(在我的 postConstruct 中)。我不确定何时调用 bean 的 setter。
【问题讨论】:
-
为什么不将实体对象保存在会话中并在所有 bean 中使用它。
-
我不想让会话膨胀。我正在寻找更适合 JSF 框架的解决方案。在会话中存储一些东西听起来像是一种解决方法。
-
你肯定需要一个
@SessionScoped/@ApplicationScoped托管 bean。关于通知的 bean,您需要更具体。 -
为什么? RequestScope 和 ViewScope 似乎足以满足我的需求。我想实现所有 bean 都使用同一个实体实例,尽管一个 bean 可能会在一个操作中更改它的某些部分。
标签: jsf jsf-2 managed-bean viewparams