首页 > 解决方案 > 是否可以在 Vaadin 14 和 RouterLink 中添加 uri 的#fragment 部分?

问题描述

是否可以在 Vaadin 14 和 RouterLink 中添加#fragment部分 URI?

我在 Vaadin 文档中找不到任何内容。

我需要它才能从另一个视图快速访问视图的特定部分。

标签: javavaadinrouterlinkvaadin14

解决方案


是否可以在 Vaadin 14 和 RouterLink 中添加 URI 的#fragment 部分?

不,那是不可能的。您的问题有一个解决方案*,但RouterLink没有任何方法来定义 url 片段,因此它会滚动到具有给定 id 的 HTML 元素。


*如何实现您的需求:
让您的目标视图类实现HasUrlParameter<String>(在 setParameter 上使用@Wildcard注释,以便您也可以导航到此视图而无需指定片段参数)。
在您视图中的 setParameter 方法中,您然后读取给定参数,如果它不为空,您可以执行一些 javascript 滚动到具有给定 id 的元素。现在您可以像这样在 RouterLink 中指定片段:
new RouterLink("MyView", MyView.class, "#my-fragment");

是的,这不是一个最佳解决方案,远非如此,但如果你真的需要它,你可以做到。

如果您希望这种情况发生,请创建一个票证,用于将 API 添加到 RouterLink 以在vaadin-flow 的 github存储库中定义 url 片段。


推荐阅读