gwt-rpc延迟窗口刷新

时间:2012-06-04 22:19:10

标签: gwt window refresh gwt-rpc

我在我的应用程序的onModuleLoad()中有以下代码:

    Window.addWindowClosingHandler(new ClosingHandler() {
        @Override
        public void onWindowClosing(ClosingEvent event) {
            event.setMessage("If you choose to close, application will sign out");
        }   
    });

    //sign out on close
    Window.addCloseHandler(new CloseHandler<Window>() {
        @Override
        public void onClose(CloseEvent<Window> event) {
            sendLogout();
        }
    });

sendLogout()函数如下所示:

// Set up the callback object.
    AsyncCallback<String> callback = new LogoutCallback(this);
    // Make the call to the survey service.

    SurveySystemService.Util.getInstance().logout(details, callback);

“细节”是某个对象。

窗口关闭时效果很好,但是如果我尝试刷新页面,它就不会注销。我想的是,由于调用是异步的,因此在重新启动模块之前,它不会完成将消息发送到服务器。

我试过了: 1.在onClose方法中创建和调用回调。 2.使用计时器检查是否已拨打电话。 3.无尽的厕所,检查与上面相同(我绝望)。

在所有这些解决方案中,程序将到达回调创建,但服务器从未收到任何内容。

对此有何帮助?

1 个答案:

答案 0 :(得分:0)

您是否可以在首次加载页面时调用注销。由于网络的无状态特性,GWT应用程序不会知道有人点击刷新或只是导航到页面之间的区别。

您可以在会话存储中存储ID变量,在浏览器窗口或选项卡关闭之前应该保留该变量。如果在应用程序启动时,会话存储中存在ID变量,则可以使用它来触发注销。