【问题标题】:How can externalResource communicate with mainWindow in Vaadin外部资源如何与 Vaadin 中的 mainWindow 通信
【发布时间】:2011-12-07 17:20:22
【问题描述】:

我有一个 vaadin 应用程序正在运行,现在,我有一个按钮,通过单击它,它将打开一个 externalResource(例如 getMainWindow().open(new ExternalResource("http://google.com"), "Google", 800, 600, Window.BORDER_NONE);)。这很好用。但是主应用程序如何知道我何时关闭该 externalResource 窗口? 问题是我想给应用添加Oauth,完成后,用户关闭窗口,应用页面应该会自动刷新?如果这种方式不起作用,有没有其他方法可以解决?谢谢

【问题讨论】:

  • 你只需要使用弹出窗口吗??
  • @umeshawasthi 是的,原始页面不能被覆盖。

标签: oauth window vaadin


【解决方案1】:

使用 getMainWindow().open(new ExternalResource(...)) 打开的选项卡不由 Vaadin 管理,因此关闭时无法通知您。

您可以在应用程序中嵌入浏览器框架:

Embedded browser = new Embedded("", new ExternalResource("http://google.com"));
browser.setType(Embedded.TYPE_BROWSER);
main.addComponent(browser);

如果您需要在单独的窗口中进行此操作,请将该窗口添加到应用程序(而不是主窗口)并打开它:

addWindow(secondWindow);
main.open(new ExternalResource(secondWindow.getURL()), "_new");

【讨论】:

  • 我尝试使用嵌入式,它适用于打开窗口,但其中的概念是将内容放在框架中,但某些 Oauth 不允许它在框架中。所以这种方式在这种情况下是行不通的。关于单独的窗口,secondWindow.getURL() 是应用程序的 url 和窗口名称的组合。但在这种情况下。如果使用“google.com”设置窗口名称,则 url 将为“hostname:portnumber/app/http://www.google.com”。还是我错过了什么?
  • 窗口名称不能是“www,google.com”,它将是您自己的 URL 的一部分。如果你不能使用框架,那你就不走运了。您认为如何将 Javascript 导入外部站点,以便在页面关闭时通知您的服务器?这将构成 XSS 攻击。
  • 好吧,看来我得另找办法了。无论如何,谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多