2013-08-16 52 views
0

我在頁面上有一個p:commandButton。當會話超時,我點擊它沒有任何反應。日誌中沒有顯示任何內容,並且不會調用該操作。p:commandButton的actionListener沒有生成ViewExpiredException

我已閱讀關於此主題的this postthis post。所以我用以下代碼創建了一個ExceptionHandler:

Throwable exc = null; 
for (final Iterator<ExceptionQueuedEvent> it = getUnhandledExceptionQueuedEvents().iterator(); it.hasNext();) { 
    exc = it.next().getContext().getException(); 
} 
return exc; 

爲了得到異常並將用戶重定向到錯誤頁面。然而,迭代器總是空的,所以exc總是null ...

回答

0

我已經找到了問題所在。

實際上,請求被認證過濾器攔截。過濾器無法在會話中找到用戶,因爲該用戶已過期,並試圖將用戶重定向到登錄頁面。

由於我的過濾器使用的是HttpServletResponse#sendRedirect,這對Ajax調用不起作用,所以沒有發生任何事情。

This (another) perfect answer BalusC向我展示了方式。所以,問題解決了!