在 vaadin webapp 中管理 UI 弹出窗口
Managing UI popup in vaadin webapp
我正在使用 Vaadin 构建一个小型网络应用程序。
我的应用程序中有一个主要 UI。那里有一个调用此代码的按钮:
BrowserWindowOpener opener = new BrowserWindowOpener(PopUp.class);
opener.setFeatures("height=500,width=500,resizable");
opener.extend(button);
如您所见,我创建了一个 class 扩展此 com.vaadin.ui.UI class,打算使其成为一个弹出窗口。在这一秒 class 我有另一个按钮应该关闭弹出窗口。
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 是一个在我的模型上运行的控制器。这个方法应该做两件主要的事情:
- 使用弹出窗口中收集的数据更新模型(在此处作为参数传递)
- 相应地更新一些主要的UI组件(模型状态的图形表示)
在 updateTopology 方法中,我想使用 getCurrent() 方法调用我的主程序 UI,以便按照我想要的方式修改它的某些组件。
我试图关闭弹出窗口 UI 以将当前的 UI 改回主要的,这样我就可以使用 getCurrent() 来获取我的主要的 UI。为此,我尝试在点击方法和 upateTopology 方法中使用 popUpUI.close() 和 .detach(),但它不起作用
由于我是 Vaadin 的新手,很可能我滥用了这些方法 and/or 错误地组织了我的 UIs 但我被卡住了,找不到任何人解决了这个问题。
如果您需要任何其他信息,请告诉我们。
提前致谢。
我确实在那里出错了。为了解决我的问题,我使用了以下代码来关闭弹出窗口并访问我的主 UI。有了这个访问权限,我可以修改和访问我需要的一切。
UI popUp, mainUI;
popUp = UI.getCurrent();
JavaScript.eval("close()");
popUp.close();
VaadinSession session = getSession();
mainUI = session.getUIById(mainUIId);
UI.setCurrent(mainUI);
关于来自我的控制器的方法调用,我让它在弹出窗口中被调用,因为它在关闭之前结束了它的任务。
我的弹出窗口是在使用这样的 BrowserWindowOpener 单击按钮时调用的
opener = new BrowserWindowOpener(PopUp.class);
opener.extend(button);
我正在使用 Vaadin 构建一个小型网络应用程序。 我的应用程序中有一个主要 UI。那里有一个调用此代码的按钮:
BrowserWindowOpener opener = new BrowserWindowOpener(PopUp.class);
opener.setFeatures("height=500,width=500,resizable");
opener.extend(button);
如您所见,我创建了一个 class 扩展此 com.vaadin.ui.UI class,打算使其成为一个弹出窗口。在这一秒 class 我有另一个按钮应该关闭弹出窗口。
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 是一个在我的模型上运行的控制器。这个方法应该做两件主要的事情:
- 使用弹出窗口中收集的数据更新模型(在此处作为参数传递)
- 相应地更新一些主要的UI组件(模型状态的图形表示)
在 updateTopology 方法中,我想使用 getCurrent() 方法调用我的主程序 UI,以便按照我想要的方式修改它的某些组件。 我试图关闭弹出窗口 UI 以将当前的 UI 改回主要的,这样我就可以使用 getCurrent() 来获取我的主要的 UI。为此,我尝试在点击方法和 upateTopology 方法中使用 popUpUI.close() 和 .detach(),但它不起作用 由于我是 Vaadin 的新手,很可能我滥用了这些方法 and/or 错误地组织了我的 UIs 但我被卡住了,找不到任何人解决了这个问题。 如果您需要任何其他信息,请告诉我们。
提前致谢。
我确实在那里出错了。为了解决我的问题,我使用了以下代码来关闭弹出窗口并访问我的主 UI。有了这个访问权限,我可以修改和访问我需要的一切。
UI popUp, mainUI;
popUp = UI.getCurrent();
JavaScript.eval("close()");
popUp.close();
VaadinSession session = getSession();
mainUI = session.getUIById(mainUIId);
UI.setCurrent(mainUI);
关于来自我的控制器的方法调用,我让它在弹出窗口中被调用,因为它在关闭之前结束了它的任务。
我的弹出窗口是在使用这样的 BrowserWindowOpener 单击按钮时调用的
opener = new BrowserWindowOpener(PopUp.class);
opener.extend(button);