JSP + Struts:处理AJAX调用中的会话超时

时间:2013-02-05 11:55:09

标签: ajax jsp struts2 servlet-filters session-timeout

我正在从JS方法调用ajax调用以下列方式调用action类的方法:

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

我的web.xml中的会话配置如下所示

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

现在,当会话在1分钟后过期时,ajax调用将返回错误(不调用action方法)。错误说

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

但这看起来像是一般错误。我想捕获会话超时异常并将用户重定向到login.jsp页面,以防发生此异常。

我甚至尝试通过this来处理它。但它对我不起作用。

您能否建议我该如何解决?

1 个答案:

答案 0 :(得分:1)

没有“会话超时异常”。

您的Ajax调用期望返回JSON,如果会话超时,应用程序中的任何内容都不会发送JSON。使用链接中的过滤器或拦截器,检查会话超时,如果是正常请求则正常处理,但如果是Ajax请求则发回HTTP错误代码。

在JavaScript回调中处理此错误代码。