0

我想创建一个带有多个 SessionScoped 支持 Bean 的 JSF-2 Portlet。我还希望他们都与将用作对象池的通用 SessionScoped Bean 共享一些 POJO。

我有两个问题困扰着我:

  1. 我想在任何支持 Bean 之前初始化这个 bean。请注意,没有 xhtml 页面会直接将对象调用到 Object Pool Bean,因此在 ObjectPool 之前至少会初始化一个 Backing Bean。有什么方法可以确保它首先是 init ,除了在每个其他 Backing Bean 的 PostConstruct 中调用?
  2. 我对使用 ManagedProperties 感到困惑,因为我需要所有 Backing bean 来调用对象池的属性,而我还需要 Backing Bean 来调用一些 Client / BackingBean 函数。如何在不创建双重引用的情况下做到这一点?
4

1 回答 1

1
  • 对于您的第一个问题,您可以在登录 xhtml 页面中使用a f:prerenderView@SessionScoped在您从页面引用它们或自己创建它们并存储在上下文中之前,不会创建 bean。如果您将 链接f:prerenderView到 bean 的某些方法,它就像一个池,它将为 HttpSession 的其余部分初始化。您可以稍后 使用注释将其注入您的其他@SessionScopedbean 。@ManagedProperty

  • 关于您的第二个问题,请记住您不必通过视图 bean 来获取会话属性。您没有将对象池本身设为 a@ManagedBean吗?所以直接从您的页面访问它!

于 2013-09-25T20:09:35.303 回答