2011-04-06 3 views
1

jsf, prettyfaces 및 hibernate를 사용하여이 웹 페이지를 만들었습니다. 주위를 둘러 보았고 대부분의 사람들이 캐시 때문에이 오류가 있다고합니다. 대부분이 오류를 발견했습니다. 로그인 후 로그 아웃하고 에 다시 로그인 해보십시오. 로그인 할 때이 오류가 발견되어 다른 페이지로 이동하려고 시도 할 때 클릭 한 링크가이 오류를 생성합니다.javax.faces.application.ViewExpiredException : 뷰를 복원 할 수 없습니다.

더 어렵게 만드는 것은 무엇입니까? 이 오류는 매번 발생하지 않습니다. 가끔 서버 다시 시작을 시도 할 때 모든 작업이 잘 처리됩니다. 가끔이 오류가 다시 발생할 때 서버를 다시 시작하고 로그인을 다시 시도했습니다. 오류 여전히 여러 가지의 조합에 의해 발생합니다 나의 이해에

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

피스 확인 [이] (http://stackoverflow.com/questions/3642919/javax-faces-application-viewexpiredexception-view-could-not-be-restored) –

답변

0

을 발생합니다

  • 필드에 대한 내부 ID를 포함하는 JSF 형태가 생성되었습니다.
  • JSF 페이지가 변경되었거나 전체 응용 프로그램이 재배포되어 내부 ID가 변경되었습니다.
  • 이전 내부 ID를 가진 JSF 형식은 (? 로그인 페이지)를 제출하고 이전 내부 ID는 JSF 페이지에 대한 새로운 IDS에서 찾을 수 없습니다.

다시 제출하기 전에 브라우저에서 페이지를 새로 고쳐야합니다 (새 ID 받기).

1

JSF는 (구성 가능한) 세션 수를 유지합니다. 더 이상 복원 할 수없는보기에 대한 게시물을 작성하면이 ViewExpiredException이 표시됩니다. 해당 세션의보기 목록에 더 이상 존재하지 않습니다.

여러 가지 이유가있을 수 있습니다. 두 가지 가능한 시나리오의 내가 지금 생각할 수는 다음과 같습니다

  • 세션/무효화
  • 복수를 (>보기에서 세션의 구성 수) 뷰를 복원해야 한 후에 생성되는 만료
관련 문제