1

私はjsf、prettyfaces、および休止状態を使用してこのWebページを作成しました。周りを見回したところ、ほとんどの人がこのエラーはキャッシュが原因であると言っています。ほとんどの人は、ログイン後にこのエラーを見つけ、ログアウトして再度ログインしようとしましたが、ログインするとこのエラーが見つかりました、他のページに移動しようとすると、クリックしたリンクでこのエラーが発生します

さらに難しいのは、サーバーを再起動して再ログインしようとすると、毎回このエラーが発生しないことです。

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)
4

2 に答える 2

1

JSFは、セッション内に(構成可能な)数のビューを保持します。ViewExpiredExceptionこれは、もう復元できないビューに投稿した場合に取得されます。そのセッションのビューのリストにはもう表示されません。

これには複数の理由が考えられます。私が今考えることができる2つの可能なシナリオは次のとおりです。

  • セッションが無効/期限切れ
  • 復元する必要のあるビューの後に作成されている複数の(>構成されたビュー内のセッション数)ビュー
于 2011-04-06T09:18:36.893 に答える
0

私の理解では、これはいくつかの組み合わせによって引き起こされます。

  • フィールドの内部 ID を含む JSF フォームが生成されました。
  • JSF ページが変更されたか、アプリケーション全体が再デプロイされたため、内部 ID が変更されました。
  • 古い内部 IDを持つ JSF フォームが送信され (ログイン ページ?) 、JSF ページの新しいID に古い内部 ID が見つかりません。

再度送信する前に、ブラウザーでページを更新する (新しい ID を取得する) 必要があります。

于 2011-04-06T09:02:15.313 に答える