【发布时间】:2020-11-01 17:19:34
【问题描述】:
我想使用 BeforeEnterObserver 接口重定向到外部页面
这是我的代码
@Route(value = "hello", layout = MainView.class)
@PageTitle("Shortener")
@CssImport("./styles/views/helloworld/hello-world-view.css")
@RouteAlias(value = "", layout = MainView.class)
public class HelloWorldView extends Div implements BeforeEnterObserver{
private TextField name;
private H1 mainTitle;
private String parameter = "";
public HelloWorldView() {
setId("hello-world-view");
//some code here
}
@Override
public void beforeEnter(BeforeEnterEvent event) {
getUI().get().getPage()
.executeJavaScript("window.location.href = 'https://www.google.com/'");
}
}
我收到此错误消息
java.util.NoSuchElementException: No value present
at java.base/java.util.Optional.get(Optional.java:141) ~[na:na]
at com.example.application.views.helloworld.HelloWorldView.beforeEnter(HelloWorldView.java:70) ~[classes/:na]
at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.sendBeforeEnterEvent(AbstractNavigationStateRenderer.java:606) ~[flow-server-4.0.4.jar:4.0.4]
似乎getUI方法返回一个空对象,有没有不使用getUI方法重定向到外部网站的方法?
【问题讨论】:
-
Seems getUI method return a null object,这会引发 NPE。堆栈跟踪中有什么更有趣的吗?beforeEnter(HelloWorldView.java:70)这是哪一行? -
你试过
event.getUI()吗? -
感谢@cfrick,我使用了 event.getUI() 方法并且它有效
标签: java vaadin vaadin-flow