- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将以下内容放入我的 web.xml 中:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/expiredIndex.jsf</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsf</location>
</error-page>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
当我启动我的应用程序并等待 1 分钟时,如果我随后尝试与其交互(JSF 1.2,h:commandButton
),我会收到错误
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.application.ViewExpiredException: viewId:/index.jsf - View /index.jsf could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:185)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:103)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
有人能告诉我为什么 javax.faces.application.ViewExpiredException
没有被提取吗?我正在寻找可能的最基本的到期设置,并且肯定这就是网络描述符中所必需的。
谢谢
编辑
现在我的 web.xml 中有以下内容:
<filter>
<filter-name>Error</filter-name>
<filter-class>myClient.ErrorFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Error</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<error-page>
<exception-type>javax.servlet.ViewExpiredException</exception-type>
<location>/expiredIndex.jsf</location>
</error-page>
(这些条目是 web.xml 中的最后一个过滤器条目)和一个使用 doFilter 方法的新过滤器,如 this 中所述。邮政。现在应该发生的是 rootCause
应该解包 ViewExpiredException,这样当 servlet session 超时时应该将用户重定向到我的 expiredIndex
页面。相反,我得到了 500。在这种情况下,我看不出还需要做什么才能进行正确的重定向。帮助!
编辑 2
500 的错误是:
javax.faces.application.ViewExpiredException: viewId:/index.jsf - View /index.jsf could not be restored.
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:185)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:103)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
prismClient.ErrorFilter.doFilter(Unknown Source)
我想这是标准的。
最佳答案
这是因为 ViewExpiredException
- 与所有其他 FacesException
一样 - 在幕后被包裹在 ServletException
中。这个用于在声明的错误页面中查找匹配项。最接近的匹配项是 java.lang.Throwable
,因此会显示关联的错误页面。
如果未找到匹配项,则 ServletException
的根本原因将被解包,并且将对已解包的异常进行第二次遍历声明的错误页面。如果删除 java.lang.Throwable
条目,您会发现这会起作用。
如果你想保留 java.lang.Throwable
,那么你最好做的就是创建一个 Filter
来解包任何 FacesException
来自 ServletException
并重新抛出它。
关于javax.faces.application.ViewExpiredException 看似被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716030/
我尝试关注不同的帖子,了解如何在 GlassFish 3.1 上的 Mojarra 2.1.0(使用 RichFaces 4)中处理 ViewExpiredException。但是我在 web.xml
我让一些带有表单的选项卡打开,当我按下命令按钮时( session 过期一段时间后)我收到一个 java 脚本警报说: serverError: class javax.faces.applicati
一周前,我研究了 ViewExpiredException,并阅读了几篇关于它的文章。 viewExpiredException JSF How to control web page caching
我想弄清楚如何防止 Session Fixation在 Glassfish 3.1 中的 JSF 登录表单上。 使用 Servlets 很容易做到,所以我试图对 JSF 做同样的事情(基于这个问题:R
我有一个使用rich:fileUpload 上传文件的页面。对于较小的文件,这可以正常工作,但是对于较大的文件 (+80MB),我通常会收到 ViewExpiredException。我已经尝试寻找解
我有包装器 PrimeFaces.ajax.AjaxResponse 来处理 ViewExpiredException(重新加载页面): var handleViewExpired = functio
JSF 应用程序可以在 session 过期时抛出 ViewExpiredException。当您的系统上有 guest 时,此事件将很常见。因此,应用程序将处理此事件而不会给访客带来任何麻烦,如下所
我正在 Glassfish v3 上开发一个 JSF 2.0 应用程序,我正在尝试处理 ViewExpiredException。但无论我做什么,我总是收到 Glassfish 错误报告,而不是我自己
我在我的项目中使用 JSF 2.0 和 Primefaces。 我有两个 xhtml 页面,即 Cars.xhtml 和 Bikes.xhtml。 我正在使用 ViewScoped 支持 bean。
我的 h:commandButton "Login"有问题:当我使用 @ViewScoped 并按下此按钮时,会出现 ViewExpiredException,但是当我使用 @SessionScope
出于记录目的,我有兴趣检测 JSF 应用程序中何时发生 session 超时。 我已经实现了一个 PhaseListener 来检查用户是否已登录并且其 session 是否已处于 Activity
在我的网络应用程序中,当 session 过期并且用户发起请求(完整页面或 AJAX)时,用户将被重定向到登录页面,并显示 session 已过期的消息。问题是,当登录页面保持打开的时间足够长以致 s
我已将以下内容放入我的 web.xml 中: javax.faces.application.ViewExpiredException /expiredIndex.jsf
我们最近将一个主要平台从 jsf 1.2 升级到了 2.0。升级后,我们每小时都会收到几个 ViewExpiredException 错误。通过阅读该主题,这似乎是 session 过期时的预期异常,
我有一个 Web 应用程序当前部署在 Wildfly 22 上,使用 JSF 2.3 和 OpenJDK 11。我目前正在将登录页面从 j_security_check 迁移到编程登录,按照这篇文章中
我有一个 jsf 1.2 应用程序,索引页中有一些链接。该链接可通过在新的 jquery 对话框中单击来打开。每个链接都会在不同的对话框中打开我的应用程序的新页面,因此,应用程序可以在单个页面的多个对
我按如下方式设置我的网络应用程序: javax.faces.application.ViewExpiredException /WEB-INF/include/vi
我们的应用程序使用的是 SUN JSF 1.2、WebSphere 7.0,我们仅在负载测试期间收到 ViewExpiredException 我已浏览以下链接 javax.faces.applica
我遇到一个问题,每次我重新部署我的应用程序时,任何现有 session 都会中断并且请求会导致 ViewExpiredException .相关问题或外部邮件列表/论坛帖子中的建议似乎都无法解决此问题
我使用 jsf、prettyfaces 和 hibernate 创建了此网页我环顾四周,大多数人说这个错误是因为缓存大多数人在登录、注销并尝试重新登录后发现此错误但我在登录时发现此错误,并且当我尝试导
我是一名优秀的程序员,十分优秀!