【问题标题】:Unnecessary Session Beans in Ajax Enabled JSF Frameworks启用 Ajax 的 JSF 框架中不必要的会话 Bean
【发布时间】:2011-03-21 22:00:08
【问题描述】:

我注意到,当使用像 Richfaces 这样的 Ajax 繁重的 JSF 1.2 实现时,不知何故,您不得不声明比您想要的更多的托管 bean,因为 Session 作用域,以便可以跨多个 Ajax 请求维护状态;有些组件将停止工作。

例如,我最近开发了这个应用程序,我必须将几乎所有的 JSF 支持 Bean 声明为 Session Scoped 以使组件“x”工作。有没有办法解决这个问题,您认为这是一种不好的做法,还是仅仅是在 JSF 1.2 中启用 Ajax 组件所付出的代价。

提前致谢。

【问题讨论】:

    标签: jsf richfaces session-state


    【解决方案1】:

    会话范围 bean 会增加内存使用量。

    另一个可用的范围是 View Scope - 这允许在请求之间保持 bean 的状态,而用户仍然在同一个视图上。

    如果您使用的是 JSF2,请考虑在 bean 名称上方使用@ViewScope

        @ViewScope
        public class myBean{
         ..
         }
    

    如果您使用 RichFaces 和 JSF1.2,请考虑在视图中的 <f:view> 下使用 <a4j:keepAlive />。例如:

    <a4j:keepAlive beanName = "#{myBean}"/>
    

    阅读更多信息here

    【讨论】:

      【解决方案2】:

      另一种选择是使用 Seam 对话。另外,我不会说组件停止工作,它们仍然工作......这是您的逻辑需要在服务器上维护某种状态。

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 1970-01-01
        • 2013-03-15
        • 2011-09-18
        • 2018-04-13
        • 2013-09-13
        • 2011-01-06
        • 1970-01-01
        • 2014-07-17
        相关资源
        最近更新 更多