2013-02-05 69 views
1

我正在從我的JS方法的Ajax調用來調用Action類的以下列方式方法:在我的web.xmlJSP + Struts的:處理在AJAX會話超時調用

$.getJSON("treeDemo_!getRootNode?appId=" + applicationId, function() { 
    }).success(function (e) { 
    }).error(function (jqXHR, textStatus, errorThrown) { 
     alert(textStatus); 
    }).complete(function() { 
    }); 

會話配置看起來是這樣的

<session-config> 
    <session-timeout>1</session-timeout> 
</session-config> 

現在,當會話過了1分鐘後,ajax調用返回錯誤(不調用操作方法)。錯誤說

textStatus = parsererror 
errorThrown = SyntaxError: JSON.parse: unexpected character 

但這看起來像一個通用的錯誤。我想捕獲會話超時異常並將用戶重定向到login.jsp頁面,以防發生此異常。

我甚至試着通過做this來處理它。但它不適合我。

你能否建議我應該如何解決它?

回答

1

沒有「會話超時異常」。

您的Ajax調用期望返回JSON,如果有會話超時,應用程序中的任何內容都不會返回JSON。在鏈接中使用過濾器或攔截器,檢查會話超時,如果是正常請求,則正常處理,但如果是Ajax請求,則發回HTTP錯誤代碼。

在你的JavaScript回調中處理這個錯誤代碼。

+0

謝謝戴夫。但正如我所提到的,我遵循了這些步驟,並按照鏈接中提到的方式創建了一個過濾器。但是,當會話超時時,控件不能達到'doFilter()',因爲它應該是理想的(我猜)。而且由於我正在進行AJAX調用,我認爲這可能是過濾器無法正常工作的原因。對此有何幫助? – DarkKnightFan

+0

@DarkKnightFan除非您將過濾器定義爲錯誤,例如將其放在S2過濾器之後,否則無法「未到達過濾器」。 –