URL 路由生成器
有时候,需要获取一些应用程序界面的 URL 通过 email 发给用户或者展示给用户。生成 URL 最简单的方法就是使用 URL 路由生成器。
URL 路由生成器提供 API 用来生成链接:实体编辑界面、通过 id 或类定义的界面。链接还能带 URL 参数,将界面的内部状态反映到 URL 上,以便将来使用。
使用 UrlRouting
bean 的 getRouteGenerator()
方法可以获得一个 RouteGenerator
的实例。RouteGenerator
具有下列方法:
-
getRoute(String screenId)
- 返回指定screenId
的界面路由,示例:String route = urlRouting.getRouteGenerator().getRoute("uiex1_Customer.browse");
结果将会是
http://host:port/#main/customers
-
getRoute(Class<? extends Screen> screenClass)
- 返回指定screenClass
的界面路由,示例:String route = urlRouting.getRouteGenerator().getRoute(CustomerBrowse.class);
结果将会是
http://host:port/#main/customers
-
getEditorRoute(Object entity)
- 返回指定entity
的默认编辑界面的路由,示例:Customer e = customerField.getValue(); String route = urlRouting.getRouteGenerator().getEditorRoute(e);
结果将会是
http://host:port/#main/customers/edit?id=5jqtc3pwzx6g6mq1vv5gkyjn0s
-
getEditorRoute(Object entity, Class<? extends Screen> screenClass)
- 生成指定screenClass
和entity
的编辑界面路由。 -
getRoute(Class<? extends Screen> screenClass, Map<String, String> urlParams)
- 生成指定screenClass
和urlParams
的界面路由。
示例
假设我们有 Customer
实体,带有标准的界面并注册了路由。我们在浏览界面添加一个按钮为选择的实体生成编辑界面的链接:
@Autowired
protected UrlRouting urlRouting;
@Autowired
protected Dialogs dialogs;
@Subscribe("getLinkButton")
protected void onGetLinkButtonClick(Button.ClickEvent event) {
Customer selectedCustomer = customersTable.getSingleSelected();
if (selectedCustomer != null) {
String routeToSelectedRole = urlRouting.getRouteGenerator()
.getEditorRoute(selectedCustomer);
dialogs.createMessageDialog()
.withCaption("Generated route")
.withMessage(routeToSelectedRole)
.withWidth("710")
.show();
}
}
生成的路由结果: