Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gwt rpc延迟窗口刷新_Gwt_Window_Refresh_Gwt Rpc - Fatal编程技术网

gwt rpc延迟窗口刷新

gwt rpc延迟窗口刷新,gwt,window,refresh,gwt-rpc,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");

我的应用程序的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();
        }
    });
Window.addWindowClosingHandler(新的ClosingHandler(){
@凌驾
窗口关闭时公共无效(ClosingEvent事件){
setMessage(“如果您选择关闭,应用程序将注销”);
}   
});
//结束时退出
addCloseHandler(新的CloseHandler(){
@凌驾
公共void onClose(CloseEvent事件){
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);
//设置回调对象。
AsyncCallback=new LogoutCallback(此);
//打电话给调查处。
SurveySystemService.Util.getInstance().logout(详细信息,回调);
其中“细节”是某个对象

当窗口关闭时,它工作正常,但是如果我尝试刷新页面,它不会注销。我认为,由于调用是异步的,因此在模块重新启动之前,它不会将消息发送到服务器

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

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


有什么帮助吗?

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


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

我最终使用Cookies来执行您建议的操作,它工作正常,谢谢!我从这个项目中学到的一个教训是gwt rpc是魔鬼:P