我在页面上有一个 p:commandButton 。当会话超时并且我点击它时没有任何反应。日志上没有任何内容,并且未调用该操作。
我已阅读有关该主题的this post和this post。所以我用以下代码创建了一个ExceptionHandler:
Throwable exc = null;
for (final Iterator<ExceptionQueuedEvent> it = getUnhandledExceptionQueuedEvents().iterator(); it.hasNext();) {
exc = it.next().getContext().getException();
}
return exc;
以获取异常并将用户重定向到错误页面。但是,迭代器始终为空,因此exc
始终为null
...
答案 0 :(得分:0)
我发现了问题所在。
实际上,请求被身份验证过滤器截获。过滤器无法在会话中找到用户,因为它已过期,并且正在尝试将用户重定向到登录页面。
由于我的过滤器使用的是HttpServletResponse#sendRedirect
,这对Ajax调用无效,所以没有发生任何事情。
This (another) perfect answer向我展示了道路。所以,问题解决了!