【问题标题】:Refresh jsf page when forwarding to itself转发到自身时刷新jsf页面
【发布时间】:2015-03-15 01:59:52
【问题描述】:

我正在开发一个带有 PrimeFaces 树导航的 JSF web 应用程序。
例如:

  • 项目 1
    • 客户 1
    • 客户 2
  • 项目 2
    • 客户 3

当用户点击一个节点时,backing bean 会像这样转发到相应的页面:

FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), "null", "/" + /*Page Name*/ + ".xhtml");

从项目页面导航到客户页面或以其他方式导航时,这不是问题。但是,当我在一个项目页面上并尝试导航到另一个项目页面(比如从项目 1 到项目 2)时,页面不会刷新(可能是因为 JSF 假定它已经在正确的页面上)。

当导航到自身时,如何强制 JSF 刷新页面?

我不想使用faces-redirect=true 来防止浏览器中的 URL 发生变化。

谢谢!

【问题讨论】:

  • 在这种情况下什么是“刷新”? Project 1Project 2,它们是否意味着/代表两个不同/独立的应用程序在各自不同的上下文中运行(在此您对跨上下文转发感兴趣,这反过来可能不受所有容器的支持/允许 - 很大警告,不应低估)?
  • 对不起,我应该澄清一下:项目 1 和 2 指的是同一页面,但内容不同。这是一个显示项目详细信息的页面,但是当我在项目 1 的页面上并单击项目 2 时,它不会刷新,所以它仍然显示项目 1 的信息。
  • 停止滥用 POST 进行导航并使用 GET。

标签: jsf jsf-2 primefaces


【解决方案1】:

我最终创建了一个额外的 xhtml 文件,该文件在加载时调用导航方法。现在单击树节点会重定向到该文件,然后导航方法会重定向到适合所选节点的任何页面。

这种方法在编程上并不完全优雅,但它可以工作并且不会显着减慢应用程序的速度。

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多