我正在尝试打开一个窗口或弹出窗口并将一些值传递给它。 我想使用参数进行发布。
我当前使用的是vaadin 7.7.6,com.vaadin.server.Page.getCurrent()。open(),它会在新的浏览器窗口中打开url,也不知道如何传递值,它也是可以使其弹出而不用打开新的浏览器窗口
private PNativeButton button()
{
if (button== null)
{
button= new button("Press Me");
button.getNativeButton().setHeight(36, Unit.PIXELS);
button.setEnabled(true);
button.addClickListener(new ClickListener()
{
@Override
public void buttonClick(ClickEvent event)
{
getCurrent().open("https://stackoverflow.com/", "Pressed", 100, 100, BorderStyle.DEFAULT);
}
});
}
return button;
}
我期望有一个新的弹出窗口,其中带有某些参数的POST网址。
答案 0 :(得分:1)
您可以扩展Window类并向其中添加一些其他参数。例如:
class MySub extends Window {
private String message;
public MySub() {
super("Sub Window");
center();
}
public void initContent() {
setContent(new Button(message, event -> close()));
}
public void setMessage(String message) {
this.message = message;
}
}
并将其用于您的用户界面
public static class SubWindowUI extends UI {
@Override
protected void init(VaadinRequest request) {
MySub mySub = new MySub();
mySub.setMessage("Close me !");
mySub.initContent();
addWindow(subWindow); // Open it in the UI
}
}
答案 1 :(得分:1)
您没有说明您使用的是哪个Vaadin版本。但是我猜想是Vaadin8。如果是这样,并且您的目标是打开带有外部页面的浏览器选项卡,则我建议使用BrowserWindowOpener,因为它具有添加查询参数的便捷API。
BrowserWindowOpener opener =
new BrowserWindowOpener(url);
opener.setParameter("parameter","value");
Button button = new Button("Press me");
opener.extend(button);
上面的将打开一个新的浏览器窗口或选项卡,如果您想打开一个弹出窗口组件(例如,参见其他答案)是更合适的方法。
为了在Window组件中显示外部内容,您需要使用BrowserFrame(正在使用iframe
)或Embbeded组件将URL包装为组件。您可以在Vaadin documentation中找到几个示例。