2015-01-16 17 views
0

我正在開發一個帶有PrimeFaces樹的JSF web應用程序,因爲它是導航。
例如:當轉發到自己時刷新jsf頁面

  • 項目1
    • 顧客1
    • 顧客2
  • 計劃2
    • 客戶3

當用戶點擊一個節點,支持bean轉發到相應的頁面是這樣的:

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

這從一個項目,一個頁面瀏覽到客戶頁面或其他時候是沒有問題的方式。但是,當我在項目頁面上並嘗試導航到另一個項目頁面時(例如從項目1到項目2),頁面不刷新(可能是因爲JSF假定它已經在正確的頁面上)。

如何強制JSF在導航到本身時刷新頁面?

我不想使用faces-redirect=true來防止瀏覽器中的URL發生更改。

謝謝!

+0

在這種情況下,「* refresh *」是什麼? 'Project 1'和'Project 2',它們是指/代表兩個不同的/獨立的應用程序,運行在它們自己的獨立的上下文中(因此您有興趣進行跨上下文轉發,而這可能不會被所有容器支持/允許 - 一個很大的警告,不應該被低估)? – Tiny

+0

對不起,我應該澄清一下:項目1和2涉及同一頁面,但內容不同。這是顯示項目詳細信息的頁面,但是當我在項目1的頁面上並單擊項目2時,它不刷新,因此它仍然顯示項目1的信息。 – user3249829

+0

只需停止濫用POST以進行導航並使用得到。 – BalusC

回答

0

我最終創建了一個額外的xhtml文件,用於調用加載時的導航方法。現在單擊樹節點將重定向到該文件,然後導航方法將重定向到適用於所選節點的任何頁面。

這種方法並不完全程序上優雅,但它的工作原理並不會顯着減慢應用程序。