4

既存の 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 アプリケーションに既に含まれており、移行作業を開始するまで削除する予定はありません)

ナビゲーションがこのように爆発する原因となる、私が間違っている可能性があることを誰か教えてもらえますか?

4

2 に答える 2

2

これは MyFaces 固有のものであると思われます。Mojarra 1.2 から 2.0 への移行時には、この問題は発生しませんでし。最終的に MyFaces のメンバーに問題を報告できるように、どちらか一方を除外するだけですが、代わりに試してみることをお勧めします。

アイデアが尽きたので、おそらく別の JSF 実装を試すことが唯一の論理的な選択肢です。移行するアプリケーションで MyFaces Tomahawk および Trinidad アドオンを使用しているため、ためらっているだけです。Mojarra (またはその他のもの) を使用してアプリを試すには、アドオンに依存するページのチャンクを削除する必要があります。うーん、悩むのはやめてやってみようかな!:)

Tomahawk/Trinidad では、JSF impl として MyFaces を明示的に必要としません。これは(マーケティングの)神話です。それらはたまたま同じベンダー (Apache) からのものです。サードパーティの JSF コンポーネント ライブラリには、JSF API のみが必要です。impl (Mojarra、MyFaces など) は本当に重要ではありません。

于 2011-05-27T18:07:32.987 に答える
0

この問題は次の日に修正されました。

https://issues.apache.org/jira/browse/MYFACES-3101

MyFaces2.0.7および2.1.1に修正があることに注意してください。

于 2011-06-25T05:22:47.740 に答える