加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

会话超时和ViewExpiredException处理JSF/PrimeFaces ajax请求

发布时间:2020-12-16 03:18:48 所属栏目:百科 来源:网络整理
导读:我发现这篇文章是非常有用的非ajax请求 How to handle session expiration and ViewExpiredException in JSF 2? 但是当我使用AJAX调用提交时,我不能使用这个。 假设在一个primefaces对话框中,我使用AJAX发出一个post请求,session已经超时了。 我看到我的
我发现这篇文章是非常有用的非ajax请求 How to handle session expiration and ViewExpiredException in JSF 2?
但是当我使用AJAX调用提交时,我不能使用这个。

假设在一个primefaces对话框中,我使用AJAX发出一个post请求,session已经超时了。
我看到我的页面卡住了。

如何解决这种情况下,当我发布使用AJAX,我可以将他重定向到我的视图过期的页面和
然后转发他到登录页面类似于上面的链接的解决方案?

JSF2 / Primefaces / Glassfish

在ajax请求中抛出的异常默认情况下在客户端完全没有反馈。只有当你运行Mojarra项目阶段设置为开发并使用< f:ajax&gt ;,那么你会得到一个裸的JavaScript警报与异常类型和消息。但除此之外,在PrimeFaces中,默认情况下没有反馈。不过,您可以在服务器日志和ajax响应(在webbrowser的开发人员工具集的“网络”部分)中看到异常。 你需要实现一个自定义 ExceptionHandler,当队列中有一个ViewExpiredException时,它基本上完成以下工作:
String errorPageLocation = "/WEB-INF/errorpages/expired.xhtml";
context.setViewRoot(context.getApplication().getViewHandler().createView(context,errorPageLocation));
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();

或者,您可以使用JSF实用程序库OmniFaces.它有一个FullAjaxExceptionHandler为此目的(源代码here,showcase demo here)。

也可以看看:

> Why use a JSF ExceptionHandlerFactory instead of <error-page> redirection?
> What is the correct way to deal with JSF 2.0 exceptions for AJAXified components?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读