URL 历史和导航
Jmix URL 历史和导航功能提供浏览器历史记录和导航,这对于很多 web 应用程序来说是最基本的功能。此功能包含以下内容:
-
历史记录 - 支持浏览器的 后退(Back) 按钮。但是不支持 前进(Forward) 按钮,因为没法重现打开界面的所有条件。
-
路由以及导航 - 注册和处理应用程序界面的路由。
-
路由 API - 一组方法,用来在 URL 中反映界面的当前状态。
fragment 是 URL 中 “#” 后面的部分,这部分用来做 路由 值。
例如,下面这个 URL:
host:port/#main/42/orders/edit?id=17
这个 URL 中,fragment 是 main/42/orders/edit?id=17
,由以下部分组成:
-
main
- 根界面(主界面) 的路由。 -
42
- 状态标记,导航机制内部使用。 -
orders/edit
- 界面路由。 -
?id=17
- 参数部分。
所有打开的界面都会将它们的路由映射到当前的 URL。比如,当用户浏览界面打开并且是当前界面的时候,应用程序的 URL 可能是这样:
http://localhost:8080/#main/0/users
如果界面没有已经注册的路由,那么只会在 URL fragment 中添加状态标记。示例:
http://localhost:8080/#main/42
如果界面有注册的路由,则会在地址后面以参数形式加上被编辑实体的 id
。示例:
http://localhost:8080/#main/1/users/edit?id=27zy3tj6f47p2e3m4w58vdca9y
UUID 类型的标识符会使用 Base32 Crockford 编码 进行加密,其他类型则不会加密。
当用户没有登录却请求了某些界面的路由,此时会使用重定向(redirect)参数。假设在地址栏中输入 #main/orders
路由。当应用程序加载并且显示登录界面之后,地址会变成:#login?redirectTo=orders
。在成功登录之后,才会打开 orders
路由对应的界面。
如果请求的路由不存在,应用程序会显示一个带有“Not Found”标题的空界面。
URL 历史和导航功能默认开启。设置应用程序属性 jmix.ui.url-handling-mode 为 NONE
可以关闭此功能。