2010-07-08 43 views
1

我在JSF應用程序中有以下3個簡單頁面。jsf - 用戶離開時的攔截頁面

index.html 
start.html 
confirmSuccess.thml 

start.html是一個簡單的形式,帶有「GO!」按鈕和一個html鏈接回到index.html。當用戶點擊GO!它在後臺bean中踢出了一個事務。如果失敗,我希望重新顯示start.html表單,但是錯誤會解釋失敗。所以,我在我的支持bean中設置了一個錯誤標誌,並且使用rendered =「」屬性來管理錯誤顯示。

很簡單吧?

那麼,如何處理用戶點擊html鏈接到index.html的情況,然後從index.html點擊鏈接回到start.html,或者直接點擊返回。也就是說,如何清除用戶離開起始頁面的截取內容,並清除錯誤標記,這樣我再次知道我不需要顯示錯誤。

這可能沒有深入到JSF生命週期管理的深處?

注意列出的3頁是我的web應用程序的一個過於簡單化,在現實中,有多個頁面的用戶可以去從的start.html,所以我不希望有一個解決方案,我需要跟蹤有人到達的頁面清除標誌以啓動。

回答

1

聽起來就像是在會話作用域bean中傳輸請求範圍數據。使持有請求範圍數據的bean 請求作用域並指示瀏覽器訪問not cache動態頁面,以便強制從Web服務器而不是從其歷史記錄中重新請求該頁面。

這就是說,我寧願使用FacesContext#addMessage()<h:messages/>的組合來顯示錯誤。您可以使用clientIdnull來表示全局消息。它們反過來已經是基於請求的,所以你不需要用標誌來渲染/不顯示錯誤顯示。

E.g.

public void submit() { 
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Error!")); 
} 

<h:messages globalOnly="true" /> 
+0

謝謝 - 你說得對請求/會話範圍的根本原因。無論如何,我會去尋求的想法。 – Kevin 2010-07-08 11:55:12

+0

不客氣。 – BalusC 2010-07-08 12:00:41