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-modeNONE 可以关闭此功能。