Tapestry应用程序中的会话超时AJAX错误

mar*_*tin 7 ajax session jquery tapestry session-timeout

我正在使用Tapestry和Spring Security以及除Prototype之外的jQuery库构建一个webapp.当用户在会话超时后单击链接时,会自动将其重定向到登录页面.当然,这对于触发AJAX请求的链接不起作用.

我知道,这是任何类型的Web应用程序的常见问题(例如http://www.openjs.com/articles/ajax/session_timeout.php).Tapestry 5有最佳实践解决方案吗?

编辑 以下解决方案(感谢Henning)对我有用:

Ajax.Responders.register(
{
    onException: function()
    {
        window.location.reload();
    }
});

如果在AJAX调用期间发生故障,则会触发页面重新加载,从而重定向到登录页面.它仍然需要一些调整(例如显示错误消息而不是重定向),但使用Ajax.Responders基本上似乎是一种很好的方法.

Hen*_*ing 5

对于使用Prototype的AJAX,您可以使用AJAX.Responders添加一个响应 AJAX失败的全局侦听 ; jQuery有一个类似的结构叫做Ajax Events,你可以使用它.

两个事件处理程序都应该在403错误时重定向到登录页面.您可以使用此功能创建mixin并将其添加到布局组件中.

我还使用了一种机制,可以防止会话超时,同时应用程序仍然在浏览器窗口中打开,只需执行一次AJAX调用并每隔几分钟接收一次空响应,从而保持会话打开.愚蠢,但工作正常.