【发布时间】:2017-04-19 05:39:14
【问题描述】:
我的 Vaadin 应用程序正在使用自定义侧导航抽屉小部件,该小部件将按钮事件路由到导航器。然后这些视图显示在 contentLayout 区域中。 contentLayout 使页面可以重复使用页面顶部的工具栏和导航抽屉,而无需重新加载它们。
导航器更新URL片段,例如:
仪表板页面 = http://example.com/#home/dashboard
我现在处于需要在 contentLayout 区域内实现子导航的阶段。因此,如果用户单击仪表板中的链接,它可以在添加新 URL 片段信息的同时显示新视图:
仪表板 + 新闻页面 = http://example.com/#home/dashboard/news
并且还生成一个永久链接供用户轻松分享或收藏:
仪表板 + 新闻页面 + 新闻项目 = http://example.com/#home/dashboard/news/?item=123543432
我正在考虑对调用使用订阅/发布模式来导航 contentLayout,但我担心并发用户以及发布事件是否可能被其他用户使用。关于如何处理用户会话的分离,是否有明确定义的指南? (例如,假设从不使用“静态”?)
其次,应用程序如何能够处理像新闻项目示例那样的“永久链接”?我只见过 Navigator 用于从事件中被动修改 URL,它可以主动处理对特定 URL 的请求吗?或者 Vaadin 的另一个组件是用来处理这个问题的?也许通过 RequestListener 来绑定它?
我现在主要关心的是子导航解决方案。我不想将导航器注入到可能需要打开另一个视图或关闭其视图的每个视图中。
【问题讨论】:
-
您不能在 #! 之后传递查询字符串!到导航器。不过,您可以传入参数。 example.com/#home/dashboard/news/?item=123543432 可能是 example.com/#home/dashboard/news/item/123543432,您将能够提取视图中的数字。