Есть ли способ передать параметры при использовании метода vaadin Page.getCurrent (). Open ()? - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь открыть окно или всплывающее окно и передать ему некоторые значения.Я хотел бы POST с параметрами.

В настоящее время я использую 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;
    }

Я ожидаю новое всплывающее окно, которое УСТАНОВИТЕ URL с определенными параметрами.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Вы не указываете, какую версию Vaadin вы используете. Но я предполагаю, что это Vaadin 8. Если это так, и ваша цель - открыть вкладку браузера с внешней страницей, я бы рекомендовал использовать BrowserWindowOpener , поскольку он имеет удобный API для добавления параметров запроса.

BrowserWindowOpener opener =
    new BrowserWindowOpener(url);
opener.setParameter("parameter","value");

Button button = new Button("Press me");
opener.extend(button);

Приведенное выше откроет новое окно или вкладку браузера, если вы хотите открыть всплывающий компонент Window (см., Например, другой ответ), более подходящий подход.

Чтобы отобразить посторонний контент в компоненте Window, необходимо использовать либо BrowserFrame (который использует iframe), либо Embbeded , чтобы обернуть URL-адрес в качестве компонента. Вы можете найти пару примеров в документации Vaadin .

1 голос
/ 11 июня 2019

Вы можете расширить класс 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
    }
}
...