2011-04-06 131 views
1

我創建了這個網頁使用jsf,靚麗和休眠 我環顧四周,大多數人都說這個錯誤是因爲緩存 大多數人發現這個錯誤登錄後,註銷並嘗試登錄回 但我發現這個錯誤,當我登錄時,當我嘗試導航到任何其他網頁,我點擊任何鏈接會產生這個錯誤javax.faces.application.ViewExpiredException:查看無法恢復

是什麼使得它更難的是,這個錯誤不會發生每次 有時當我嘗試重新啓動服務器,登錄回來,everythin工作就好了 但有時當這個錯誤再次發生,我試着重新啓動服務器,並嘗試登錄back.the錯誤仍然發生

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) 
+2

皮斯檢查[this](http://stackoverflow.com/questions/3642919/javax-faces-application-viewexpiredexception-view-could-not-be-restored) – 2011-04-06 08:51:32

回答

0

據我所知,這是通過若干事物的組合引起的:

  • 包含用於字段的內部id一個JSF的形式已被生成。
  • JSF頁面已更改,或重新部署了整個應用程序,導致內部標識符發生更改。
  • JSF的形式與內部ID提交(登錄頁面?)和內部ID不能在 IDS用於JSF頁面中找到。

在嘗試再次提交之前,您必須在瀏覽器中刷新頁面(獲取新的ID)。

1

JSF在會話中保留一個(可配置)數量的視圖。如果您對發佈無法恢復的視圖發佈帖子,您將獲得此ViewExpiredException,即。在該屆會議的意見清單中不再出現。

可能有多種原因。兩種可能的情景是我能想到的,現在是:

  • 會話無效/過期
  • 多(>鑑於會話配置的數量)應還原一前一後正在創建的視圖