我正在使用Vaadin构建一个小型Web应用程序。 我的应用程序中有一个主UI。那里有一个调用此代码的按钮:
BrowserWindowOpener opener = new BrowserWindowOpener(PopUp.class);
opener.setFeatures("height=500,width=500,resizable");
opener.extend(button);
如您所见,我创建了一个扩展此com.vaadin.ui.UI类的类,旨在使其成为一个弹出窗口。在第二节课中,我有另一个按钮,应该关闭弹出窗口。
public void click(Button.ClickEvent event){
TopologyService tService = new TopologyService();
tService.updateTopology(FormAction.ADD, TargetedElement.CONNECTION, comboBoxi1.getValue(), comboBoxi2.getValue(), comboBoxNorm.getValue(), textfieldSpeed.getValue());
}
单击调用此功能的按钮时。 这里的topologyService是一个在我的模型上运行的控制器。这个方法应该做两件事:
在updateTopology方法中,我想使用getCurrent()方法调用我的主UI,以便按照我想要的方式修改它的一些组件。 我试图关闭弹出窗口UI以将当前UI更改回主要UI,以便我可以使用getCurrent()来获取我的主UI。为此,我尝试在click方法和upateTopology中使用popUpUI.close()和.detach(),但它不起作用 由于我是Vaadin的新手,我很可能误用了这些方法和/或错误地组织了我的用户界面,但我已经陷入困境,无法找到解决此问题的任何人。 如果您需要任何其他信息,请让我们知道。
提前致谢。
答案 0 :(得分:0)
UI popUp, mainUI;
popUp = UI.getCurrent();
JavaScript.eval("close()");
popUp.close();
VaadinSession session = getSession();
mainUI = session.getUIById(mainUIId);
UI.setCurrent(mainUI);
关于来自我的控制器的方法调用,我在弹出窗口中调用它,因为它在关闭之前结束了它的任务。
我的弹出窗口是在点击按钮时调用的,像这样的
是BrowserWindowOpeneropener = new BrowserWindowOpener(PopUp.class);
opener.extend(button);