Vaadin Flow 14 中同一视图 class 的多个路由

Multiple routes to the same View class in Vaadin Flow 14

我想重用 View 实现并为其定义多个参数化路由。

这真的可能吗?我已经尝试了下面的方法,但总是遇到错误 404。似乎是 RouteParameters 造成的。

Nav nav = new Nav();
RouterLink link1 = new RouterLink();
link1.setRoute(viewClass, new RouteParameters("entity", "e1"));
nav.add(link1);
RouterLink link2 = new RouterLink();
link2.setRoute(viewClass, new RouteParameters("entity", "e2"));
nav.add(link2);

重要提示:我不想在 URL.

中显示路由参数

如果您不想在 URL 中显示数据,那么除了将值放在路由参数中之外,您应该寻找其他解决方案。

如果我没理解错的话,这听起来像是一个状态管理问题。在视图之间共享状态的机制有很多(包括 cookie 和客户端存储之类的东西),但由于这不是您想要与客户端共享的信息,因此您应该考虑服务器端状态管理选项。

您不限于特定于 Vaadin 的解决方案,但它确实提供了一些选项。您可以使用 VaadinSession,尽管它将在多个浏览器 windows 之间共享,因此如果用户打开多个 windows,您可能会遇到意外行为。如果您正在使用 Spring,您可以定义并注入一个 @UIScope bean 并将您的状态存储在那里。因为为每个浏览器 window 创建了一个新的 UI,状态将被隔离。如果您走这条路,请小心将范围窄的 bean 注入范围更广的 bean。