如何解决在 Vaadin Flow 中的路由之间传递自定义对象
我正在 Vaadin Flow 14 中开发一个具有单独页面视图的应用程序。一个是创建,另一个是查看。
Create 是通常的表单样式的东西,这很好。查看页面是我使用 Vaadin Grid 将保存的数据呈现为 API 调用的一部分的内容。所以我只是计划使用一个带有路由名称的页面作为所有视图页面请求的视图,并根据特定的页面标识符执行 api 调用。我的疑问是,当单击主页上的视图图标时,如何将参数或 pojo 对象传递给我的视图路由。我想 Before Enter 可以提供帮助,但不确定编码或是否可能。
提前致谢。
解决方法
我的疑问是我怎么能传递参数
传递参数最直接的方法是使用 url-parameters。以下伪代码大致显示了该模式。如果用户倾向于刷新此视图,您自然也可以将 bean 缓存到会话属性或 SessionScoped bean 存储中,以避免从数据库中重复获取。
@Route(value = "myroute",layout = MainLayout.class)
public class MyRoute implements HasUrlParameter<Integer>,AfterNavigationObserver {
private Integer key;
public MyRoute() {
... setup things like the form and binder ...
}
@Override
public void afterNavigation(AfterNavigationEvent event) {
if (key != null) {
Bean bean = service.fetchBean(key);
}
binder.readBean(bean); // populate form with bean
}
@Override
public void setParameter(BeforeEvent event,@OptionalParameter Integer parameter) {
key = parameter;
}
}
关于路由器的更多信息:https://vaadin.com/learn/training/v14-router 文档:https://vaadin.com/docs/v14/flow/routing/tutorial-routing-url-generation#navigation-target-with-hasurlparameter
你可以像这样在导航中使用参数
getUI().ifPresent(ui -> ui.navigate(MyRoute.class,key));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。