これを解決するには、サーバー側のセッションではなく、POSTフォームの非表示の入力フィールドにビューが(もちろんシリアル化された形式で)保存されるように、状態保存方法をに設定しclient
ます。 Cookieserver
によって参照されるJSESSIONID
ため、セッションCookieを削除するか、セッションが期限切れになると、基本的にすべてのビューが失われます。これを行うには、次のコンテキストパラメータをweb.xml
:に追加します。
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
上記が何らかの理由でオプションではない場合、あなたができる最善のことはweb.xml
、次のようにエラーページとしてそれを穏やかに処理することです:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/errors/sessionexpired.jsf</location>
</error-page>
これは例外を解決するものではありませんが、少なくともエラーページで、問題とエンドユーザーが実行する必要のあるアクションについてエンドユーザーに通知する機会を提供します。エラーページがログインページを指すようにして、エンドユーザーが再びログインページに直面している理由に関するメッセージを条件付きでレンダリングすることもできます。
参照: