我正在开发一个使用Vaadin框架的应用程序。应用程序有一个主菜单,当用户点击菜单项,申请执行AbstractMenuCommand类的后代像Vaadin多个浏览器窗口/标签
public class RunReportCommand extends AbstractMenuAction {
@Override
public void execute() throws MenuException {
Window = .... // create window here
openWindow(window);
}
protected void openWindow(Window window) {
application.getMainWindow().open(new ExternalResource(window.getURL()));
application.setMainWindow(window);
}
}
在此之后主浏览器窗口内容与所需的窗口代替。花费了大量的时间后,我来到了这个解决办法:如果你想更换浏览器窗口中的内容与Vaadin窗口,你应该总是做
application.getMainWindow().open(new ExternalResource(window.getURL()));
application.setMainWindow(window);
最近我有一个新的任务,一个功能添加到应用程序:用户应具备的能力在不同的选项卡中打开窗口,所以问题是我只有一个主窗口在vaadin(和window.open只适用于主窗口),但用户可以在diffirent浏览器选项卡中有很多diffirent窗口,所以如果用户单击浏览器选项卡中的菜单项不包含主窗口,重新加载无效窗口内容将不起作用。