GWT结束关闭窗口的Http Session

时间:2012-10-15 18:29:22

标签: session gwt

当我打开应用程序关闭浏览器窗口时,我也希望结束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");
        }
    });

1 个答案:

答案 0 :(得分:0)

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

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

请参阅WindowImpl.initWindowCloseHandler(),以及WindowImplIE

ClosingEvent比CloseEvent早一点。

(第三种方法Window.addWindowCloseListener可以有效地注册$wnd.onbeforeunload$wnd.onunload,但不推荐使用该方法。)

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)。用户关闭窗口,因此无法再替换其位置。