p:commandButton的actionListener不生成ViewExpiredException

时间:2013-08-16 20:56:26

标签: jsf primefaces

我在页面上有一个 p:commandButton 。当会话超时并且我点击它时没有任何反应。日志上没有任何内容,并且未调用该操作。

我已阅读有关该主题的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 ...

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。

实际上,请求被身份验证过滤器截获。过滤器无法在会话中找到用户,因为它已过期,并且正在尝试将用户重定向到登录页面。

由于我的过滤器使用的是HttpServletResponse#sendRedirect,这对Ajax调用无效,所以没有发生任何事情。

BalusC的

This (another) perfect answer向我展示了道路。所以,问题解决了!