1

我已经google了很多,但无法找到解决这个问题的方法。我有一个在浏览器窗口中运行的 Vaadin 应用程序。我有一个注销按钮,单击它必须使会话无效并关闭浏览器窗口。我能够获取此代码以使会话无效并关闭应用程序。但是,我也希望关闭浏览器窗口,这是我没有成功的地方

WebApplicationContext webCtx = (WebApplicationContext) appRef.getMainWindow().getApplication().getContext();
                HttpSession session = webCtx.getHttpSession();
                session.invalidate();
                appRef.getMainWindow().getApplication().close();

我正在使用 vaadin 6.x 并尝试了以下操作,但它们不适用于我尝试过的 Chrome 和 IE 浏览器。

            appRef.getMainWindow().executeJavaScript("window.close();");

任何想法将不胜感激。我的另一个问题是我是否需要获取主窗口的名称,然后调用 mainWindow.close(); 还是只是 window.close() ?

4

1 回答 1

3
  1. 如果您到目前为止还没有完成,请阅读https://vaadin.com/book/vaadin6/-/page/application.close.html 。
  2. 如果 appRef 已经是您的应用程序,您不必调用appRef.getMainWindow().getApplication()来获取应用程序。做就是了appRef.close();
  3. 不要手动使会话无效。它与 vaadin 生命周期混淆,因此不再执行下一行,至少不在 vaadin 上下文中。只需执行“application.close()”,让 vaadin 完成其余的工作。
  4. 在 vaadin 6 “window.close()” 作品中,我将它与 IE 和 chrome 一起使用。因此,在您删除会话失效内容后,您的代码appRef.getMainWindow().executeJavascript("window.close()");将按预期工作。
于 2013-07-25T05:53:09.817 回答