既存の JSF アプリケーションを JSF 1.2 から JSF 2.0 に移行しようとしています。MyFaces 1.2.8 を使用していましたが、MyFaces 2.0.5 を使用したいと考えています。
MyFaces 2.0.5 で私が経験しているのは、最初に要求されたページは適切にレンダリングされますが、別のページに移動しようとするとViewExpiredException
. メッセージは次のとおりです。
ビュー識別子の保存されたビューステートが見つかりませんでした: /SomePageName.jsf (「SomePageName」は、移動元のページの名前です)
http://localhost:8080/MYAPP/SomeOtherPage.jsfなど、ナビゲートしたいページの Faces フレンドリー URL を手動で入力すると、他のページが適切にレンダリングされます。また、アプリケーションは、セッションが既に存在することを認識し、新しいセッションを作成しようとしません。
私のアプリケーションは、JSF 1.2 アプリケーションに期待されるように、JSP ファイルのみで構成されています。私の意図は、最初にアプリを JSF 2.0 で動作させ、次に各ページを一度に 1 つずつ Facelet として書き直すことです。
私のナビゲーション ルールの一部は次のようになります。
<navigation-rule>
<display-name>ManagePorts</displayName>
<from-view-id>/ManagePorts.jsp</from-view-id>
<navigation-case>
<from-outcome>REFRESH</from-outcome>
<to-view-id>/ManagePorts.jsp</to-view-id>
</navigation-case>
</navigation-rule>
いくつかは次のようになります。
<navigation-rule>
<navigation-case>
<from-outcome>MANAGE_PORT_LIST</from-outcome>
<to-view-id>/ManagePorts.jsp</to-view-id>
</navigation-case>
</navigation-rule>
(REFRESH の結果が最善の方法ではないことは認識していますが、それは古い 1.2 アプリケーションに既に含まれており、移行作業を開始するまで削除する予定はありません)
ナビゲーションがこのように爆発する原因となる、私が間違っている可能性があることを誰か教えてもらえますか?