我有一個JSF頁面,它不受j_security_check
的保護。我執行以下步驟:如果JSF頁面受j_security_check保護,則不會引發Ajax請求ViewExpiredException
- 在瀏覽器中打開JSF頁面。
- 重新啓動服務器。
- 單擊JSF頁面上的命令按鈕以啓動ajax調用。
Firebug顯示ViewExpiredException
正如預期的那樣上升。
帖子:
javax.faces.ViewState=8887124636062606698:-1513851009188353364
響應:
<partial-response> <error> <error-name>class javax.faces.application.ViewExpiredException</error-name> <error-message>viewId:/viewer.xhtml - View /viewer.xhtml could not be restored.</error-message> </error> </partial-response>
但是,一旦我配置頁面,通過j_security_check
保護,執行上面列出,奇怪的是相同的步驟(我)ViewExpiredException
不再提出。相反,響應只是一種新的視圖狀態。
帖子:
javax.faces.ViewState=-4873187770744721574:8069938124611303615
響應:
<partial-response> <changes> <update id="javax.faces.ViewState">234065619769382809:-4498953143834600826</update> </changes> </partial-response>
有人可以幫我想出解決辦法?我期望它會引發異常,以便我可以處理該異常並顯示錯誤頁面。現在它只是響應一個新的ViewState,我的頁面被卡住,沒有任何視覺反饋。
謝謝BalusC。保存了我的一天。 –
不客氣。 – BalusC
哦另外一個問題,我想知道爲什麼會發生以下情況:如果我使用context.getExternalContext()。redirect(loginURL),它確實將我重定向到登錄頁面。但是登錄後,瀏覽器會顯示一個以ViewState爲內容的XML文件。 xml文件與我在我的問題中發佈的第二個xml文件完全相同。如果我使用context.getExternalContext()。redirect(homepageURL),一切正常。它會帶我登錄頁面。登錄後,主頁將顯示。 –