菜单配置
为了生成自定义菜单,可以使用[classname]MenuConfiguration 来收集定义好的服务端和客户端路由。客户端路由取自文件系统路由定义,服务端路由来源于带有注解[annotationname]`@Menu`的路由。
收集的菜单项通过[classname]UI`的访问控制(即[classname]`NavigationAccessControl`与[classname]`ViewAccessChecker)进行过滤。如果应用定义了登录和路由的`Roles`,返回的列表会只展示当前用户可用的路由。
创建路由菜单
在Flow应用程序中,任何标记有[annotationname]@Menu 注解的路由,都将用于菜单收集。
要获取可用的菜单路由,请调用静态方法`MenuConfiguration.getMenuEntries()。该方法将返回一个[classname]`List<MenuEntry>,首先按照找到的顺序排序,然后再按路径字母顺序及区域排序。通过使用[classname]Anchor,可以很容易地创建一个简单的菜单,例如:
Source code
Java
List<MenuEntry> menuEntries = MenuConfiguration.getMenuEntries();
menuEntries.forEach(entry -> layout.add(new Anchor(entry.path(), entry.title())));菜单项返回的数据
路由的[classname]`MenuEntry`包含该路由的各种信息。使用这些数据,可以自动地填充菜单。
包含的数据如下:
path-
可用于导航的路由路径。
title-
在[annotationname]
@Menu`注解或[annotationname]@PageTitle`中定义的标题(如有定义);否则,使用类的简单名称。客户端路由的标题则来自文件系统的路由数据。 order-
菜单项的顺序号(如果已定义)。
icon-
菜单要使用的图标。该值可用在`<vaadin-icon>` 元素的`icon`属性内,接受图标的组和名称(例如`vaadin:file`)。也可以通过`<vaadin-icon>` 元素的`src`属性提供值,其中路径指向图标的位置(例如`line-awesome/svg/lock-open-solid.svg`)。
menuClass-
带[annotationname]`@Menu`注解的源class。对于客户端路由,该值始终为null。
647922A8-D542-4FA7-AAF6-44D40FC6A33B