在两条路由之间传递Vaadin 14中的参数

问题描述 投票:0回答:2

请帮助我在 vaadin 应用程序的视图之间进行导航。 在 OrdersView 类中,我创建一个像

这样的链接
UI.getCurrent().navigate(FullOrderView.class, new RouteParameters("orderId", "123"));

在 FullOrderView 类中,我指定了这样的路线

@Route("order/:orderId")
public class FullOrderView extends AppLayout implements HasUrlParameter<String>{
    @Override
    public void setParameter(BeforeEvent event, String parameter) {
    }

但我收到错误

java.lang.IllegalArgumentException: Navigation target 'com.example.crudwithvaadin.FullOrderView' requires a parameter.

如果我删除“implements HasUrlParameter”和 setParameter() 我会收到错误

No route found for the given navigation target 'com.example.crudwithvaadin.FullOrderView' and parameters '{}'

如何修复错误并正确传递参数? 谢谢!

java vaadin vaadin14
2个回答
2
投票

您正在组合不同的路由器功能。路由模板参数(:orderId)的使用必须与

BeforeEnterObserver
结合使用,而不是
HasUrlParamter


0
投票

出现错误:com.vaadin.flow.router.NotFoundException:找不到给定导航目标的路线 请帮我解决一下。

主布局视图: UI.getCurrent().navigate(DefaultView.class, new RouteParameters("project_Id",selectedProject.getId().toString()));

默认视图: @Route(value = "默认映射", 布局 = MainLayout.class) 公共类 DefaultView 扩展 VerticalLayout 实现 HasUrlParameter { @覆盖 公共无效setParameter(BeforeEvent事件,@OptionalParameter RouteParameters参数){ if (参数!= null ) { 字符串名称=parameter.getParameterNames().toString(); System.out.println("名字......"+names); } } }

© www.soinside.com 2019 - 2024. All rights reserved.