Кнопка Vaadin 10 перенаправлена ​​на URL

При нажатии кнопки мне нужно выполнить какое-то действие, а затем перенаправить на внешний URL-адрес.

Все примеры, которые я нашел, относятся к более старой версии Vaadin и не работают на Vaadin 10.

Может кто-нибудь привести пример?


person Tyvain    schedule 12.09.2018    source источник


Ответы (1)


В большинстве случаев я бы рекомендовал вам использовать новый Якорь в Vaadin 10+. Его цель - охватить ваш вариант использования, заменить BrowserWindowOpener и т. Д.

Если ваш вариант использования заключается в перенаправлении пользователей, не вошедших в систему, на внешнюю страницу входа в систему SSO, я бы сделал это по-другому. Я бы не выполнял перенаправление в кнопке выхода, а вместо этого реализовал бы его в управлении доступом к представлениям с помощью BeforeEnterEvent, вам необходимо реализовать интерфейс BeforeEnterObserver в представлении и переопределить метод beforeEnter(..) следующим образом:

@Override
public void beforeEnter(BeforeEnterEvent event) {
    if (VaadinSession.getCurrent().getAttribute("userLoggedIn") == null) {
        UI.getCurrent().getPage().executeJavaScript("window.open(\"http://vaadin.com/\", \"_self\");");
    }
}
person Tatu Lund    schedule 13.09.2018
comment
Мне любопытно, как лучше всего сделать так, чтобы такой якорь выглядел как обычная кнопка? - person Steffen Harbich; 13.09.2018
comment
как мне выполнить свой собственный код при щелчке мышью? А как мне сделать так, чтобы она была похожа на кнопку? - person Tyvain; 13.09.2018
comment
Мне удалось заставить работать собственный код: Anchor anch = new Anchor (xxxx / cas / logout, Déconnexion); anch.getElement (). addEventListener (щелкните, e - ›{System.out.println (CLICK !! + e);}); - person Tyvain; 14.09.2018
comment
Все еще не то, о чем я просил, мне нужно, чтобы кнопка выглядела (со значком и т. Д.) И делала это на java. Я попробовал другой подход: не отображать привязку и fireEvent из кнопки, но это не работает ... Пример был бы здесь отличным. - person Tyvain; 14.09.2018
comment
@Tyvain, спасибо за дополнительную информацию, я лучше понимаю ваш вариант использования и соответственно добавил больше советов. - person Tatu Lund; 14.09.2018