【问题标题】:GWT end Http Session on Window closeGWT 在窗口关闭时结束 Http 会话
【发布时间】:2012-10-16 19:26:50
【问题描述】:

当我在应用打开的情况下关闭浏览器窗口时,我也想结束 http 会话。 我已经尝试过Execute code on window close in GWT,但我在 onClose 方法中放置的任何东西都不会运行。

Window.addCloseHandler(new CloseHandler<Window>()
    {

        @Override
        public void onClose(CloseEvent<Window> event)
        {
            //Code in here never executes!
            alert("Hi");
            Window.Location.replace(GWT.getHostPageBaseURL() + "logout.jsp");
        }
    });

【问题讨论】:

    标签: session gwt


    【解决方案1】:

    实际上有两种方法可以使用:

    • Window.addWindowClosingHandler:注册ClosingEvent,由JavaScript的$wnd.onbeforeunload触发。
    • Window.addCloseHandler:注册CloseEvent,由 JavaScript 的$wnd.onunload 触发。

    WindowImpl.initWindowCloseHandler(),也见WindowImplIE

    ClosingEvent 比 CloseEvent 早一点触发。

    (还有第三种方法Window.addWindowCloseListener,它有效地注册$wnd.onbeforeunload$wnd.onunload,但该方法已被弃用。)

    看不到alert的原因大概是用ClosingHandler.onWindowClosing()的javadoc解释的:

     * Fired just before the browser window closes or navigates to a different
     * site. No user-interface may be displayed during shutdown.
    

    而不是Window.location.replace(),您应该为注销进行 ajax 调用(例如,使用 GWT-RPC 或 RequestBuilder)。用户关闭了窗口,所以它不能再替换它的位置了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 2014-09-24
      • 2010-10-31
      • 1970-01-01
      • 2020-09-12
      相关资源
      最近更新 更多