【问题标题】:Remove Session scoped managed bean on browser close在浏览器关闭时删除会话范围的托管 bean
【发布时间】:2010-11-12 19:56:00
【问题描述】:

在 JSF 应用程序中,我想在用户关闭浏览器窗口时删除会话范围的托管 bean。在执行以下操作之前,我使用了一个链接:

session.removeAttribute("<nameOfManagedBean>");

这似乎很好地解决了这个问题。但是,即使用户在浏览器上单击“X”,我也希望运行相同的代码。

他们是否有某种方式可以在任何浏览器上正确检测到此事件?

【问题讨论】:

    标签: javascript jsf jakarta-ee


    【解决方案1】:

    顺便说一句,我已经使用 ICEFaces JSF 框架专门针对 Internet Explorer 6.0(我为我的客户端支持的浏览器......是的,读完这句话后我的头也很痛......)解决了这个问题。我已经写了一个描述here

    【讨论】:

      【解决方案2】:

      任何浏览器中?不。即使在 一些 浏览器(主要浏览器,假设 javascript 已打开等)中使用它也不是小菜一碟,因为要区分用户完全关闭窗口并不容易,导航到另一个站点,甚至是应用程序的另一个页面。

      也许您可以改用会话超时?通过setMaxInactiveInterval() 方法直接设置它,或者-如果您只想删除这个单个bean,同时保持会话本身完好无损-通过后台线程定期检查getLastAccessedTime() 并在超时达到您认为必要的任何值时删除bean。

      【讨论】:

        猜你喜欢
        • 2012-12-26
        • 2013-09-24
        • 2015-07-03
        • 2012-09-02
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        相关资源
        最近更新 更多