javax.faces.application.ViewExpiredException:无法还原视图

javax.faces.application.ViewExpiredException:无法还原视图,java,jsf,filter,viewexpiredexception,prettyfaces,Java,Jsf,Filter,Viewexpiredexception,Prettyfaces,我使用jsf、prettyfaces和hibernate创建了这个网页 我环顾四周,大多数人说这个错误是因为缓存 大多数人在登录、注销并尝试重新登录后发现此错误 但是我在登录时发现了这个错误,当我尝试导航到任何其他页面时,我单击的任何链接都会产生这个错误 更难的是,这种错误并非每次都会发生 有时,当我尝试重新启动服务器,重新登录时,一切正常 但有时当这个错误再次发生时,我尝试重新启动服务器并尝试重新登录。同样的错误仍然发生 javax.faces.application.ViewExpiredE

我使用jsf、prettyfaces和hibernate创建了这个网页 我环顾四周,大多数人说这个错误是因为缓存 大多数人在登录、注销并尝试重新登录后发现此错误 但是我在登录时发现了这个错误,当我尝试导航到任何其他页面时,我单击的任何链接都会产生这个错误

更难的是,这种错误并非每次都会发生 有时,当我尝试重新启动服务器,重新登录时,一切正常 但有时当这个错误再次发生时,我尝试重新启动服务器并尝试重新登录。同样的错误仍然发生

javax.faces.application.ViewExpiredException: viewId:/ePortfolio.jsf - View /ePortfolio.jsf could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:112)
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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
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:859)
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)

据我所知,这是由以下几方面共同造成的:

  • 已经生成了一个包含字段内部id的JSF表单
  • JSF页面已更改,或者整个应用程序已重新部署,导致内部ID更改
  • 提交了带有旧内部id的JSF表单(登录页面?),在JSF页面的新id中找不到旧的内部id

在尝试再次提交之前,您必须在浏览器中刷新页面(获取新id)。

据我所知,这是由以下几种因素共同造成的:

  • 已经生成了一个包含字段内部id的JSF表单
  • JSF页面已更改,或者整个应用程序已重新部署,导致内部ID更改
  • 提交了带有旧内部id的JSF表单(登录页面?),在JSF页面的新id中找不到旧的内部id
在尝试再次提交之前,必须在浏览器中刷新页面(获取新id)。

JSF在会话中保留(可配置)数量的视图。如果您向一个无法再恢复的视图发送帖子,即在该会话的视图列表中不再显示,您将获得此
viewexpiredeexception

这可能有多种原因。我现在能想到的两种可能的情况是:

  • 会话无效/过期
  • 在应恢复的视图之后创建多个(>视图中配置的会话数)视图
JSF在会话中保留(可配置)数量的视图。如果您向一个无法再恢复的视图发送帖子,即在该会话的视图列表中不再显示,您将获得此
viewexpiredeexception

这可能有多种原因。我现在能想到的两种可能的情况是:

  • 会话无效/过期
  • 在应恢复的视图之后创建多个(>视图中配置的会话数)视图
Pease check Pease check