class 实现 RouterLayout 也可以定义为 @Route
Can a class implementing RouterLayout could also be defined as @Route
我正在学习 Vaadin Flow (Vaadin v10),但对 Route(@Route 作为注解)和 RouterLayout 的概念有困难。
来自我已经阅读过的文档
Vaadin's website!我无法找到特定问题的答案。
可以将实现 RouterLayout 的 class 也定义为 @Route 吗?
@Route("")
public class MainLayout extends Div implements RouterLayout {
}
请(如果可能)提供对某些文档的引用。据我了解, RouterLayout
旨在呈现其中的视图。因此,如有必要,可以覆盖 public void showRouterLayoutContent(HasElement content)
方法以创建所需的布局。因此,将本质上定义视图的 @Route 注释与 RouterLayout 混合使用没有意义?
或者是吗?如果RouterLayout可以和@Route注解一起使用,说明layout也是view;有人能给我提供一个简单的场景吗?
正如您所说 - 在概念层面上,将 @Route
和 RouterLayout
放在同一个 class 上似乎很奇怪。 @Route
注释放在叶节点上。您可以有一个独立的 @Route
,它将放置在 <body>
元素中,或者您可以有一个嵌套布局,其中路由显示在一个或多个父布局内。可以使用注释的第二个参数指定父布局,如
@Route(value = "users", layout = Dashboard.class)
public class Users extends Div {
//...
,其中 Dashboard
需要实现 RouterLayout
。因此,您将使用 http://server-address-here/users
访问此路由,它会在 Dashboard
中显示 Users
。
如果你想要一个更具描述性的 URL,你可以使用 Dashboard
上的 @RoutePrefix
注释来实现它:
@RoutePrefix("dashboard")
public class Dashboard extends VerticalLayout implements RouterLayout {
// ...
现在您将从 http://server-address-here/dashboard/users
到达 Users
视图,而其他方面将与以前相同。
我正在学习 Vaadin Flow (Vaadin v10),但对 Route(@Route 作为注解)和 RouterLayout 的概念有困难。
来自我已经阅读过的文档 Vaadin's website!我无法找到特定问题的答案。
可以将实现 RouterLayout 的 class 也定义为 @Route 吗?
@Route("")
public class MainLayout extends Div implements RouterLayout {
}
请(如果可能)提供对某些文档的引用。据我了解, RouterLayout
旨在呈现其中的视图。因此,如有必要,可以覆盖 public void showRouterLayoutContent(HasElement content)
方法以创建所需的布局。因此,将本质上定义视图的 @Route 注释与 RouterLayout 混合使用没有意义?
或者是吗?如果RouterLayout可以和@Route注解一起使用,说明layout也是view;有人能给我提供一个简单的场景吗?
正如您所说 - 在概念层面上,将 @Route
和 RouterLayout
放在同一个 class 上似乎很奇怪。 @Route
注释放在叶节点上。您可以有一个独立的 @Route
,它将放置在 <body>
元素中,或者您可以有一个嵌套布局,其中路由显示在一个或多个父布局内。可以使用注释的第二个参数指定父布局,如
@Route(value = "users", layout = Dashboard.class)
public class Users extends Div {
//...
,其中 Dashboard
需要实现 RouterLayout
。因此,您将使用 http://server-address-here/users
访问此路由,它会在 Dashboard
中显示 Users
。
如果你想要一个更具描述性的 URL,你可以使用 Dashboard
上的 @RoutePrefix
注释来实现它:
@RoutePrefix("dashboard")
public class Dashboard extends VerticalLayout implements RouterLayout {
// ...
现在您将从 http://server-address-here/dashboard/users
到达 Users
视图,而其他方面将与以前相同。