【问题标题】:Navigation back through history通过历史导航返回
【发布时间】:2017-04-24 08:36:21
【问题描述】:

多次导航返回(重定向返回)的最佳做法是什么?我创建了一个带有堆栈的 sessionScoped Bean,但这会破坏导航,以防打开不同的选项卡推送错误的 url。

导航示例:

页面 A -> 页面 B -> 页面 C

页面 C -> 页面 B -> A

如何获取最后一个url并返回并再次返回?好的,我实现了 viewParams 现在仍然不知道如何返回。

【问题讨论】:

  • 使用ViewScoped 支持多个标签。见How to choose the right bean scope?
  • @JasperdeVries ViewScoped 如何帮助我多次导航?
  • 你的那部分问题太宽泛/不清楚。
  • @JasperdeVries 我只是想知道导航返回的最佳做法是什么。我为这个解决方案使用了一个堆栈,但副作用是并行打开的选项卡。如果我在一个选项卡中导航,堆栈会发生变化,而在另一个选项卡中返回的导航将发生变化,最终会出现错误的返回 url。

标签: jsf managed-bean


【解决方案1】:

处理导航的最佳模型是依靠客户端浏览器记住它去过哪些 URL;所有框架都是如此,而不仅仅是 JSF。

JSF 使得在会话中维护大量不必要的状态变得容易(并且很有吸引力)。保持会话范围的 bean 尽可能轻,并确保正确初始化 Web bean 所需的所有内容都编码在视图参数中的 URL 中。这样一来,您就不必重新发明轮子,而且无论客户端打开了多少个选项卡,一切都会毫无意外地顺利进行。

【讨论】:

  • 使用 SessionStorage 来维护一个带有 url 的数组并根据导航推送和弹出是一种不好的做法吗?
  • 我认为这是不必要的,而且肯定会出现错误(正如您所发现的那样)。它只会复制客户端浏览器已经在做的事情。
  • 我通过url添加参数传递参数。最佳做法是什么?你说我不应该使用 sessionStorage...你能给我一个更清晰的提示吗?
  • 如果我重定向我的 viewParams 为空...因此我将参数直接放入 url
  • 你能给我一些详细的提示吗? :(
猜你喜欢
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 2019-07-26
  • 1970-01-01
  • 2012-07-13
相关资源
最近更新 更多