Vaadin 10按钮已重定向到URL

Vaadin 10按钮已重定向到URL,vaadin,vaadin10,Vaadin,Vaadin10,单击按钮后,我需要执行一些操作,然后重定向到外部url 我找到的所有示例都是针对旧版本的Vaadin,但不适用于Vaadin 10 有人能举个例子吗?在大多数情况下,我建议您使用Vaadin 10+中的新组件。它的目的是覆盖您的用例,替换BrowserWindowOpener等 若您的用例是将未登录的用户重定向到外部SSO登录页面,那个么我将采用不同的方法。我不会在注销按钮中执行重定向,而是使用BeforeEnterEvent在视图的访问控制中实现它,您需要在视图中实现BeforeEnterOb

单击按钮后,我需要执行一些操作,然后重定向到外部url

我找到的所有示例都是针对旧版本的Vaadin,但不适用于Vaadin 10


有人能举个例子吗?

在大多数情况下,我建议您使用Vaadin 10+中的新组件。它的目的是覆盖您的用例,替换BrowserWindowOpener等

若您的用例是将未登录的用户重定向到外部SSO登录页面,那个么我将采用不同的方法。我不会在注销按钮中执行重定向,而是使用
BeforeEnterEvent
在视图的访问控制中实现它,您需要在视图中实现BeforeEnterObserver接口,并覆盖
BeforeEnterEvent(..)
方法,如下所示:

@Override
public void beforeEnter(BeforeEnterEvent event) {
    if (VaadinSession.getCurrent().getAttribute("userLoggedIn") == null) {
        UI.getCurrent().getPage().executeJavaScript("window.open(\"http://vaadin.com/\", \"_self\");");
    }
}

我很好奇,让这样一个锚看起来像普通按钮的最好方法是什么?我如何在点击时执行我的自定义代码?我设法让自定义代码工作起来:“Anchor anch=new Anchor(“,”Déconnexion”);anch.getElement().addEventListener(“click”,e->{System.out.println(“click!!”+e);}”);“仍然不是我所要求的,我需要一个按钮外观(带有图标等)并用java实现它。我尝试了另一种方法:不显示锚点,通过按钮显示fireEvent,但不起作用。。。这里有一个很好的例子。@Tyvain,谢谢你提供更多信息,我更了解你的用例,并相应地添加了更多建议。