JSFセッションの処理に問題があります:最初は毎回次のようになりましたviewExpiredException
:
javax.faces.application.ViewExpiredException: viewId:/anyForm.jsf - View /anyForm.jsf could not be restored.
そこで、web.xml
ファイルに次のコードを追加しました。
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/index.jsf?reason=expired</location>
</error-page>
私のindex.jsf
ファイルには次のものがあります(いくつかのフォームと入力も取得しています):
<h:outputText value="#{messages.session_expired}"
rendered="#{param.reason == 'expired'}" />
タイムアウトが発生するたびににリダイレクトされindex.jsf
、テキストが表示されますが、入力に値を入力してフォームの送信ボタンを押すと、引き続き にリダイレクトされますindex.jsf
。だから、私はループで立ち往生しています。私も次のようなことを試しました:
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
<param-value>true</param-value>
</context-param>
私が読んだという事実によりindex.jsf
、自動的に新しいセッションが作成されます。しかし、これは私をまったく助けませんでした。(ループ)タイムアウトを取得し、入力の値を変更してフォームを送信した場合にも、この例外が発生します(primefacesの「スピナー」入力を使用しています):
javax.servlet.ServletException: Index: 1, Size: 1
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
java.util.ArrayList.RangeCheck(ArrayList.java:547)
java.util.ArrayList.get(ArrayList.java:322)
javax.faces.component.AttachedObjectListHolder.restoreState(AttachedObjectListHolder.java:165)
javax.faces.component.UIInput.restoreState(UIInput.java:1411)
com.sun.faces.application.view.StateManagementStrategyImpl$2.visit(StateManagementStrategyImpl.java:276)
com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151)
javax.faces.component.UIComponent.visitTree(UIComponent.java:1589)
javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
javax.faces.component.UIForm.visitTree(UIForm.java:344)
javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:263)
com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:188)
com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:452)
com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)