3.5.13.4. URL 路由生成器
有时候,需要获取一些应用程序界面的 URL 通过 email 发给用户或者展示给用户。生成 URL 最简单的方法就是使用 URL 路由生成器。
URL Routes Generator provides API for generating links to an entity editor screen or a screen defined by its id or class. The link can also contain URL parameters that enable to reflect inner screen state to URL to use it later. URL 路由生成器提供 API 用来生成链接:实体实例编辑界面、带界面 id 或者界面类的界面。连接还能带 URL 参数,将界面内部的状态反映到 URL 上,以便将来使用。
使用 UrlRouting
bean 的 getRouteGenerator()
方法可以获得一个 RouteGenerator
的实例。RouteGenerator
具有下列方法:
getRoute(String screenId)
– 返回指定screenId
的界面路由,示例:String route = urlRouting.getRouteGenerator().getRoute("demo_Customer.browse");
结果将会是
route = "http://host:port/context/#main/customers"
getRoute(Class<? extends Screen> screenClass)
– 返回指定screenClass
的界面路由,示例:String route = urlRouting.getRouteGenerator().getRoute(CustomerBrowse.class);
结果将会是
route = "http://host:port/context/#main/customers"
getEditorRoute(Entity entity)
– 返回指定entity
的默认编辑界面的路由,示例:Customer сustomer = customersTable.getSingleSelected();
String route = urlRouting.getRouteGenerator().getEditorRoute(сustomer);
结果将会是
route == "http://localhost:8080/app/#main/customers/edit?id=5jqtc3pwzx6g6mq1vv5gkyjn0s"
getEditorRoute(Entity entity, Class<? extends Screen> screenClass)
– 生成指定screenClass
和entity
的编辑界面路由。getRoute(Class<? extends Screen> screenClass, Map<String, String> urlParams)
– 生成指定screenClass
和urlParams
的界面路由。
URL 路由生成器示例
假设我们有 Customer
实体,带有标准的界面并注册了路由。 我们在浏览界面添加一个按钮用来为选择的实体生成编辑界面的链接:
@Inject
private UrlRouting urlRouting;
@Inject
private GroupTable<Customer> customersTable;
@Inject
private Dialogs dialogs;
@Subscribe("getLinkButton")
public 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();
}
}
生成的路由结果: