在将 portlet (jsr-286) 与 JSF 2.0 一起使用时,我正在寻找会话标志的替代方案。
问题是我必须使用 @PostConstruct 从后端加载数据。原因是portlet 在运行时加载到动态portlet 页面中。因此,当第一次加载 portlet 时,会为 RenderRequest 调用 RESTORE_VIEW,并调用几个 Web 服务来加载一些数据。
当触发页面上的操作时,我在 portlet 运行时遇到了两个请求的问题:首先处理 ActionRequest,再次调用 RESTORE_VIEW,然后 LifeCycle 一直持续到 INVOKE_APPLICATION 结束。现在,处理调用 RESTORE_VIEW 和 RENDER_RESPONSE 的 RenderRequest。
我的 BackingBean 都是 @RequestScoped,这意味着在调用操作时会调用两次 @PostContruct,这会导致性能问题,因为 Web 服务也会被调用两次。现在最简单的想法是在 portlet 中使用会话标志,用于控制何时需要调用后端服务,何时不需要。
这种方法有更好的选择吗?其他人如何处理 Portlet-JSF2-Environment 中的 Bean 初始化?