问题标签 [viewexpiredexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6785 浏览

jsf-2 - JSF 视图状态何时过期?

我相信以下是真的

  • 如果javax.faces.STATE_SAVING_METHOD设置为client,则视图永不过期
  • aViewExpiredException将被抛出
    • 如果javax.faces.STATE_SAVING_METHOD设置为server 并且视图状态不可用
    • 当会话被销毁时(因为会话中保存的所有视图在逻辑上也会同时过期)
    • 当为com.sun.faces.clientStateTimeout设置了一个值(默认为 NONE)并且请求之间的时间超过了这个配置的时间

我不知道

  1. 视图状态不再可用的原因是什么(会话超时除外)?
  2. 是否可以配置任何时间值来控制视图状态超时?

谢谢你

相关

0 投票
1 回答
25366 浏览

jsf-2 - 不断收到 javax.faces.application.ViewExpiredException: viewId with jsf 2

无论我做什么,我都会得到 javax.faces.application.ViewExpiredException: viewId。我知道如何处理异常(如果出现错误,请再次重定向到主页),问题是我从 commandButton 调用的任何操作都没有执行。

基本上我有一个带有操作的commandButton 的简单视图。我按下它并得到viewExpiredException,或者如果我处理错误,我没有收到错误消息,但我的commandButton 仍然不起作用。

我试着添加这个:

但它不起作用。我不知道发生了什么事。。

这是我的看法:

后备豆:

错误信息:

我需要知道为什么会发生这种情况,而不是如何处理异常。我无法从 commandButton 调用任何操作,因为没有任何反应。

0 投票
2 回答
28453 浏览

jsf-2 - ViewExpiredException:找不到保存的视图状态:在 JSF 中提交表单时

尝试提交表单时出现以下异常。

bean 在@ViewScoped并且STATE_SAVING_METHOD设置为server。我正在使用Primefaces 3.5

我提到了问题javax.faces.application.ViewExpiredException: View could not be restore but could not resolve the issue。

我尝试设置STATE_SAVING_METHODclient,但结果为 NotSerializableException: org.springframework.dao.support.PersistenceExceptionTranslationInterceptor

任何帮助,将不胜感激。

0 投票
2 回答
777 浏览

jsf - Java ee 会话/对话/视图超时重定向

我的环境是:NetBeans7.2.1、GlassFish3.1、JSF2 和 Weld 1.1.0。

在其中一种情况下(会话/对话/查看超时),我正在尝试重定向到错误页面。

从我读到的有很多选择:

  1. <error-page>在内部使用web.xml(但由于某种原因,当我使用location页面error.xhtml时它不起作用,只能使用 servlet - 就这个问题提出了这个问题)。

  2. 在此示例中使用<exception-handler-factory>inside faces-config.xmlwhich 将使用CustomExceptionHandlerlike 。

  3. 在此示例中使用@WebFilter类似。

我的主要问题是,在我重定向到error.xhtml页面后,我想禁用返回到以前的页面。所以即使用户点击后退按钮,他仍然会被重定向到错误页面。

当出现异常时,我能够重定向到错误页面,但无法清除缓存,因此当用户返回时,他仍然可以看到上一页的内容。

我不完全了解上述 3 个选项之间的差异,以及每个选项的确切作用。

有人可以解释一下吗?

有什么区别

NavigationHandler nav = fc.getApplication().getNavigationHandler(); nav.handleNavigation(fc, null, "/error"); facesContext.renderResponse();

((HttpServletResponse)response).sendRedirect("yourCustomJSF.jsf");?

如何通过重定向和清除缓存来处理这些异常,以便用户无法看到上一页?

提前致谢。

0 投票
0 回答
125 浏览

jsf - 进程中无法访问 JSF 会话 bean 目标

我有一个已经使用了几年的 JSF 1.2 Web 应用程序。在过去的几天里,我在用户处理过程中看到了许多“目标无法访问”的错误。

我的会话范围 bean 上的基础对象似乎为空。这发生在 JSF 页面之间,因此对象绝对不是 null,用户点击 a h:commandButton,我们进行一些验证,然后转发到我们遇到错误的下一页。用户可以在几分钟内再试一次,它工作正常。代码几个月没有改变。

是否存在某种内存限制或我要访问的用户数量?我web.xmlcom.sun.faces.numberOfViewsInSessioncontext-parm 设置为 15,就像默认值一样。我想如果超过了它会抛出一个ViewExpiredException虽然,这不是我所看到的。

有没有其他方法可以解决为什么会话范围的 bean 变量会被重置?

谢谢

0 投票
1 回答
2227 浏览

jsf - 来自 web.xml 的 JSFViewExpiredException 处理不起作用

我正在学习 j2ee,并从一个简单的登录和注销应用程序开始。我想在会话超时时优雅地处理 javax.faces.application.ViewExpiredException。看了几篇文章,我尝试使用下面的 web.xml 来处理它。

但是,这仍然会导致后端出现相同的异常。以下是我为重现问题而重复的步骤:

  1. 从 index.xhtml 登录。这使用户使用 ah:commandbutton 登录到 welcome.xhtml 以进行注销
  2. 让会话过期
  3. 单击注销按钮。如果会话已过期,则应将用户重定向到 index.xhtml

关于我缺少什么的任何想法?根据我对许多帖子的阅读,这似乎是正确的方法。

0 投票
1 回答
808 浏览

jsf - OmniFaces FullAjaxExceptionHandler 的 logException 方法的覆盖不会被调用

我正在使用OmniFaces (1.7) FullAjaxExceptionHandler在 ajax 请求期间处理 (ViewExpired)Exception。

我不想让 FullAjaxExceptionHandler 像默认实现那样记录具有 SEVERE 级别的异常。所以我确实重写了logException方法,但仍然调用了默认方法而不是被重写的方法。

我注册了以下工厂:

这是我的ViewExpiredExceptionHandlerFactory

和扩展的FullAjaxExceptionHandler

我错过了什么吗?

0 投票
2 回答
3558 浏览

ajax - JSF2 NullPointerException 而不是 ViewExpiredException

我使用 Mojarra 2.2.2、PrimeFaces 4.0、OmniFaces 1.7、Tomcat 7、Weld。

当服务器上的会话过期并发送 ajax 请求时,会出现以下堆栈跟踪:

为什么抛出 NullPointerException 而不是 ViewExpiredException?我怎样才能以正确的方式处理这个问题?我在 faces-config.xml 中注册了一个异常处理程序,并在 web-xml 中添加了一个适当的错误页面。

0 投票
1 回答
815 浏览

jsf-2 - 在调用 ExceptionHandlerWrapper 中的 handle() 方法之前处理 ViewExpiredException

我已经通过 google 和 stackoverflow 进行了搜索,但找不到任何与我类似的问题。

在我的项目中,我正在正确处理 ViewExpiredException 并向用户显示当前会话已超时的自定义页面。这很好用,但我想在此消息显示给用户之前做一些事情。实际上,我在这里使用 2 个不同的会话,一个在前端,一个在后端,所以这个想法是在当前会话超时时不启动新的后端会话。当我在 doFilter 方法中时,是否有可能获取 ViewExpiredException,所以我不启动新的后端会话(只是因为不需要它)?或者还有其他方法吗?

我已经尝试通过获取当前上下文

但显然上下文为空,因为会话超时。在 ExceptionHandlerWrapper 中,我可以访问 UnhandledExceptionQueuedEvents,但这对我没有帮助,因为我之前需要这些信息。

我希望我的问题足够清楚。

提前感谢您的帮助!

问候塞巴斯蒂安

0 投票
0 回答
224 浏览

ajax - Primefaces 演示中的“视图已过期”消息

primefaces 演示页面中,如果您等待足够的时间让会话过期而不做任何事情,然后单击 ajax 按钮,您会收到错误消息:

从 primefaces 展示中查看已过期消息

我想知道这个机制是如何实现的。他们是否有可能使用Fullajaxexceptionhandler作为primefaces的omni faces补充?