2013-07-24 190 views
1

我已经google了很多,但无法找到解决此问题的解决方案。我有一个在浏览器窗口中运行的Vaadin应用程序。我有一个注销按钮,点击它必须使会话无效并关闭浏览器窗口。我能够获得此代码来使会话无效并关闭应用程序。不过,我期待也关闭浏览器窗口,这就是我没有我使用vaadin 6.x和尝试了以下任何成功关闭Vaadin的浏览器窗口

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

但他们没有在浏览器我试过其工作是Chrome和IE。

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

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

+0

类似的问题被问了几天前,但可能没有工作的答案? http://stackoverflow.com/questions/17759411/how-to-close-current-browser-tab-vaadin/17760042 – Stano

+0

另一个问题是vaadin 7,这是vaadin 6。 –

回答

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和铬。因此,在删除会话失效后,您的代码appRef.getMainWindow().executeJavascript("window.close()");将按预期工作。