如何解决Vaadin 流重定向到页面重新加载的特定路由
我正在使用 Vaadin Flow。我遇到了一个问题,在我导航到一条路线之后,如果我重新加载页面,我仍然会登陆同一页面(我想这应该是它的工作方式)。我希望在重新加载时重定向到特定路线。类似于捕获重新加载事件并重定向到特定路由。
例如
http://localhost:9090/user - 我目前所在的路线。
http://localhost:9090/ - 我需要在重新加载页面时导航到的路由。
提前致谢。
解决方法
你的问题不是很清楚你是否只是想要
a) 别名或
b) 创建一个只显示一次的视图,然后将用户重定向到其他地方。
对于别名,使用 @RouteAlias
注释有一个非常简单的解决方案。这使得向视图添加多个路由成为可能。
@Route(value = "",layout = MainLayout.class)
@RouteAlias(value = "main",layout = MainLayout.class)
public class MainView extends VerticalLayout {
...
}
对于第二种情况,我将研究 BeforeEnterEvent
,它在导航期间触发并促进重定向(请参阅:https://vaadin.com/docs/v14/flow/routing/tutorial-routing-lifecycle)。您还需要 @PreserveOnRefresh
,否则将创建新的视图实例并且计数将始终为零。
@PreserveOnRefresh
@Route(value = "",layout = MainLayout.class)
public class MainView extends VerticalLayout implements BeforeEnterObserver {
private int count = 0;
@Override
public void beforeEnter(BeforeEnterEvent event) {
if (count > 0) {
event.forwardTo(OtherView.class);
}
count++;
}
}
如果您更愿意将导航限制在该视图中,以便它只能通过您的应用程序而不是通过直接链接(或刷新)进行,那么您可以使用 BeforeEnterObserver
并选中 {{1 }}。
直接通过 URL 导航或刷新浏览器选项卡时为 NavigationTrigger
,使用 PAGE_LOAD
时为 ROUTER_LINK
,使用 RouterLink
时为 UI_NAVIGATE
。
请注意,即使您尚未创建路由器链接,用户也可以在浏览器中创建路由器链接,因此您不应依赖它来确保安全。
UI#navigate
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。