问题标签 [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 投票
4 回答
4416 浏览

jsf - jsf登录超时

好的简单的问题。我有一个 JSF 应用程序,其中包含一个登录页面。问题是如果用户加载登录页面,离开一段时间,然后尝试登录会话过期并抛出 ViewExpiredException。发生这种情况时,我可以重定向回登录,但这不是很顺利。如何允许此流程正确登录而无需额外尝试?

0 投票
5 回答
42148 浏览

java - 在 JBoss AS 5 中运行的 JSF Web 应用程序中处理“会话已过期”

这个问题与我的另一个问题“ Java Web 应用程序中的会话过期时如何重定向到登录页面? ”有关。以下是我正在尝试做的事情:

  1. 我有一个在 JBoss AS 5 上运行的 JSF Web 应用程序
  2. 当用户处于非活动状态时,比如说 15 分钟,如果他在会话过期后尝试使用应用程序,我需要注销用户并将他重定向到登录页面。
  3. 因此,正如“ JSF 注销和重定向”中所建议的那样,我已经实现了一个过滤器,该过滤器检查会话过期条件,如果会话过期,则将用户重定向到 session-timed-out.jsp 页面。
  4. 我在 web.xml 中的所有其他过滤器定义之上添加了 SessionExpiryCheckFilter,这样我的会话到期检查将始终得到第一个命中。

现在是我面临的挑战。由于我使用的是 JBoss AS,当会话过期时,JBoss 会自动将我重定向到登录页面(请注意,不会调用会话过期检查过滤器)。因此,在我登录后,我的 SessionExpiryCheckFilter 拦截了请求,它看到一个会话可用。但是,它抛出异常javax.faces.application.ViewExpiredException: viewId:/mypage.faces - View /mypage.faces could not be restored.

以前有人遇到过这个问题吗?有什么想法可以解决这个问题吗?

0 投票
5 回答
5962 浏览

java - 在 JSF 和 Richfaces 中处理过期的 ViewState

我有一系列相互构建的注册页面。当用户会话到期时,我有一个侦听器可以清理服务器上的所有内容,并且效果很好。但是,如果用户尝试做任何其他事情,我只想将他们重定向回该系列的第一页。但是,我的过滤器似乎无法正常工作。我不断收到 javax.faces.application.ViewExpiredException

处理这个异常的最佳实践是什么?我真的不能只在 web.xml 中处理,因为这太全球化了。另外,错误页面是从一些 JSF 代码呈现的——似乎我需要使用 PhaseListener 来捕捉这种情况,因此异常不会首先发生,但我一直无法找到一个好的模型如何做到这一点。有任何想法吗?

0 投票
1 回答
12875 浏览

java - com.sun.faces.enableRestoreView11Compatibility 在 JSF 1.2 中使用什么

当我有 javax.faces.application.ViewExpiredException 时,我想将用户发送到登录页面。

web.xml

sessionExpired.jsf

但是 enableRestoreView11Compatibility 是 JSF 1.1 中使用的方法,JSF 1.2 的解决方案是什么?

0 投票
1 回答
5974 浏览

java - viewExpiredException JSF

为了在 JSF 中处理 viewExpiredException,我编写了代码

web.xml.

error.html我已重定向到原始登录页面。但问题是会话范围的 bean 即使会话过期也没有被清除。有没有办法解决这个问题?

0 投票
2 回答
17519 浏览

java - JSF:无法捕获 ViewExpiredException

我正在 Glassfish v3 上开发一个 JSF 2.0 应用程序,并且我正在尝试处理 ViewExpiredException。但无论我做什么,我总是得到一个 Glassfish 错误报告,而不是我自己的错误页面。

为了模拟 VEE 的发生,我将以下函数插入到我的支持 bean 中,它会触发 VEE。我正在通过commandLink 从我的JSF 页面触发此功能。编码:

起初我通过简单地向我的 web.xml 添加一个错误页面来尝试它:

但这不起作用,我没有重定向到错误,但我看到了 Glassfish 错误页面,它显示了一个 HTTP 状态 500 页面,其中包含以下内容:

接下来我尝试编写 ExceptionHandlerFactory 和 CustomExceptionHandler,如JavaServerFaces 2.0 - The Complete Reference中所述。所以我将以下标签插入到 faces-config.xml 中:

并添加了这些类:工厂:

自定义异常处理程序:

但我仍然没有重定向到我的错误页面 - 我得到了与上面相同的 HTTP 500 错误。我做错了什么,我的实现中可能缺少什么异常处理不正确?任何帮助都非常感谢!

编辑

好吧,我说实话。事实上,我的代码实际上是用 Scala 编写的,但说来话长。我一直认为这是一个Java问题。在这种情况下,真正的错误是我自己的愚蠢。在我的 (Scala) 代码中,在 CustomExceptionHandler 中,我忘记添加带有“i.remove();”的行 所以 ViewExpiredException 在处理后留在了 UnhandledExceptionsQueue 中,并且它“冒泡了”。当它冒泡时,它变成了一个 ServletException。

真的很抱歉让你们俩感到困惑!

0 投票
2 回答
17220 浏览

jsf - Web.xml 中的 java.lang.Throwable 错误页面中显示的 ViewExpiredException

我正在开发一个 JSF Web 应用程序,如果视图过期,我需要在其中显示一个“会话过期”页面,但对于所有其他人来说,我需要一个一般技术错误页面。当我触发异常时,应用程序只会进入技术错误页面。这是错误页面定义:

我删除了 TechnicalError.jsp 错误页面元素,它工作正常,但是当我把它们放回去时,我无法进入 sessionExpired.jsp 页面。我如何告诉 Web 容器评估这些标签的顺序,以便出现正确的页面?谢谢。

0 投票
4 回答
3468 浏览

jsf - JSF 中的 ViewExpiredException

我正在使用 JSF,并且在 web.xml 中有 javax.faces.STATE_SAVING_METHOD 到客户端。我想要发生的是,当会话超时并且我尝试重定向到另一个页面时,它必须重定向到 sessionTimeout.jsf,并且在单击该页面上的按钮时,它必须重定向到 login.jsf。我设计了 sessionTimeout.jsf。每当会话到期并且我尝试导航到不同的页面时,都会抛出 javax.faces.application.ViewExpiredException。我在目标页面中设置了一个会话变量,以便每次进入该页面时,它首先检查变量,但在进入该页面之前它会抛出异常。如何解决这个问题?

0 投票
10 回答
278155 浏览

jsf - javax.faces.application.ViewExpiredException:无法恢复视图

我编写了具有容器管理安全性的简单应用程序。问题是当我登录并打开另一个我注销的页面时,然后我回到第一页并单击任何链接等或刷新页面时出现此异常。我想这是正常的(或者可能不是:))因为我注销并且会话被破坏了。我应该怎么做才能将用户重定向到例如 index.xhtml 或 login.xhtml 并避免他看到该错误页面/消息?

换句话说,我如何在注销后自动将其他页面重定向到索引/登录页面?

这里是:

0 投票
2 回答
28815 浏览

jsf - com.sun.faces.numberOfViewsInSession 与 com.sun.faces.numberOfLogicalViews

JSF 2 的 Mojarra 实现具有以下上下文参数:

  • com.sun.faces.numberOfViewsInSession(默认为 15)
  • com.sun.faces.numberOfLogicalViews(默认为 15)

它们之间有什么区别?文档并没有过多地谈论这些。我的应用程序在某些页面上遇到了问题ViewExpiredException,但是在我们将这些设置提高到(更高)值之后,我们就不再遇到问题了。

我的应用程序是一个财务、表单繁重、启用 ajax 的应用程序(某些屏幕有 50 多个输入,可以选择通过 AJAX 添加更多数据/输入)。

这种行为的原因是什么?我知道第一个参数定义了会话中保留的“页面”数量,这可能对后退按钮很有用,但我触发的用例ViewExpiredException不使用后退按钮。第二个参数指的是什么?如果我留在同一个屏幕上,但通过 AJAX 继续添加大量数据,这是否会导致页面需要大量逻辑视图?