【问题标题】:JSF : Show navigation history with back and forward buttonJSF:使用后退和前进按钮显示导航历史
【发布时间】:2012-11-28 16:47:12
【问题描述】:

我想知道如何在页面顶部向我的用户显示他的导航历史记录。像这样:

home > register > product

以及如何在 JSF 中实现后退和前进按钮。我读了some topics,但没有一个真正解释如何实现这些功能。 我不想为此使用一些框架,我认为这是一件简单的事情,没有必要使用框架。

我认为完全用<h:link /> 做某事不是一个好主意,我会给你们举个例子:

用户进入系统:

home > register

用户自己注册

home > login > register(有可以注册其他用户的链接)

正确的历史是:

home > login > register

不是

home > register

【问题讨论】:

  • <h:link> 用于循环访问迄今为止访问的所有页面,例如<ui:repeat><h:link>,正如 Luiggi 所暗示的那样。

标签: jsf jsf-2 back browser-history forward


【解决方案1】:

您不理解链接中第二个答案的哪一部分?使用 LinkedList(由LinkedList 实现的Stack 或由ArrayDeque 实现的Deque 将完成工作)并控制自己的推送和弹出操作一定不难,还可以在页面中创建一个部分这些链接即由<ui:repeat> 实现。

不管怎样,PrimeFaces 已经用breadcumb 组件解决了这个工作的一部分,即使你不想使用第三方库来完成这个工作,你可以看看sources,看看 PrimeFaces 是如何伙计们已经完成了这项工作。

【讨论】:

  • 第二个例子我明白你所说的,但是我怎样才能将当前页面传递给类,以便它能够插入到该链接列表中?
  • 它可以通过 EL 中的 #{view.viewId} 或 Java 中的 UIViewRoot#getViewId() 获得。
【解决方案2】:

如果您将每个页面都作为自己的 .xhtml 页面,那么您可以硬编码面包屑。如果您希望后退按钮正常工作,那么在您的所有链接/按钮中,您需要将?faces-redirect=true 添加到您的链接中。

例子

<h:commandLink value="Test" action="blah.xhtml?faces-redirect=true" />

【讨论】:

  • 他可以使用任何链接。我只是在演示如何进行重定向。
  • 您的代码执行重定向后获取,而在这种特殊情况下仅获取就足够了。另见stackoverflow.com/questions/4317684/…
  • @BalusC,如果我有这个没有硬核的后退和前进按钮会更好,因为我不知道用户行为,所以它应该更灵活。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
相关资源
最近更新 更多