我正在学习Vaadin Flow(Vaadin v10),并且对Route(作为注释的@Route)和RouterLayout的概念感到困难。
从我已经阅读过的文档中 Vaadin's website!我找不到特定问题的答案。
能否将实现RouterLayout的类也定义为@Route?
@Route("")
public class MainLayout extends Div implements RouterLayout {
}
请(如果可能)提供一些文档的参考。据我了解,RouterLayout
旨在呈现其中的视图。因此,如有必要,public void showRouterLayoutContent(HasElement content)
方法可以被覆盖以进行所需的布局创建。因此,放置本质上定义视图的@Route注释与RouterLayout混合没有意义吗?
是吗?如果RouterLayout可以与@Route注释一起使用,则表明布局也是一个视图;有人可以给我提供一个简单的方案吗?
答案 0 :(得分:0)
就像您说的那样-从概念上讲,@Route
和RouterLayout
都在同一个类上似乎很奇怪。 @Route
批注放置在叶节点上。您可以有一个独立的@Route
,该元素将放置在<body>
元素中,也可以有一个嵌套布局,其中路由显示在一个或多个父布局中。父布局可以使用注释的第二个参数指定,例如
@Route(value = "users", layout = Dashboard.class)
public class Users extends Div {
//...
,其中Dashboard
需要实现RouterLayout
。因此,您将使用http://server-address-here/users
访问此路由,并且它将在Users
中显示Dashboard
。
如果您想使用更具描述性的URL,可以在@RoutePrefix
上使用Dashboard
注释来实现:
@RoutePrefix("dashboard")
public class Dashboard extends VerticalLayout implements RouterLayout {
// ...
现在您将从Users
进入http://server-address-here/dashboard/users
视图,而其他情况将保持不变。