2011-05-27 46 views
4

既存のJSFアプリケーションをJSF 1.2からJSF 2.0に移行しようとしています。私はMyFaces 1.2.8を使用していて、MyFaces 2.0.5を使いたいと思っています。JSF 1.2からJSF 2.0への移行後、すべてのナビゲーションでViewExpiredExceptionが発生する

MyFaces 2.0.5では、最初に要求されたページが正しくレンダリングされますが、別のページに移動しようとするとViewExpiredExceptionになります。メッセージは次のとおりです。いいえ保存されたビューステートがビュー識別子のために見つかりませんでした

:場合

(「SomePageNameは」私から離れて航行していたページの名前です)/SomePageName.jsf I手で移動したいページのFacesフレンドリーなURL(例えば、http://localhost:8080/MYAPP/SomeOtherPage.jsf)を手動で入力すると、もう一方のページが正しくレンダリングされます。アプリケーションは、すでにセッションがあることを認識し、新しいセッションを作成しようとしません。

私のアプリケーションは、JSF 1.2アプリケーションから期待されるように、JSPファイルのみで構成されています。私の意図は、まずJSF 2.0でアプリケーションを動作させ、各ページをFaceletとして一度に1つずつ書き直すことです。

私のナビゲーションルールの一部は、次のようになります。

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

といくつかは次のようになります。(私はREFRESHの結果は、物事を行うための最善の方法ではないことを認識し、しかし

<navigation-rule> 
    <navigation-case> 
     <from-outcome>MANAGE_PORT_LIST</from-outcome> 
     <to-view-id>/ManagePorts.jsp</to-view-id> 
    </navigation-case> 
</navigation-rule> 

既に古い1.2のアプリケーションに入っていて、移行作業を開始するまで削除するつもりはありません)

私が何をしているか教えてもらえますかgナビゲーションがこのように爆発する原因になりますか?

+1

私はこれがMyFaces特有のものだと思うが、[Mojarra](http://javaserverfaces.java.net)1.2から2.0への移行時にこの問題は発生しなかった。私はそれを代わりに試してみることをお勧めします。たとえそれを除外して、最終的に問題をMyFacesの男の子に報告できるようにすることです。 – BalusC

+0

アイディアが不足しているので、別のJSF実装を試みることが唯一の論理的な選択肢です。私が移行しているアプリケーションでMyFaces TomahawkとTrinidadアドオンを使用しているので、私は躊躇しています。 Mojarra(または他のもの)を使ってアプリを試すためには、アドオンに依存するページのチャンクを削除する必要があります。ああ、私はそれについてフレッティングをやめ、ちょうどやるべきだと思います! :) –

+1

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

答えて

2

Mojarra 1.2から2.0に移行するとき、これはMyFaces特有のものと思われますが、この問題は発生しませんでした。私はそれを代わりに試してみることをお勧めします。たとえそれを除外して、最終的に問題をMyFacesの男の子に報告できるようにすることです。

アイデアが不足しているため、別のJSF実装を試してみるのが唯一の論理的な代替方法です。私が移行しているアプリケーションでMyFaces TomahawkとTrinidadアドオンを使用しているので、私は躊躇しています。 Mojarra(または他のもの)を使ってアプリを試すためには、アドオンに依存するページのチャンクを削除する必要があります。ああ、私はそれについてフレッティングをやめ、ちょうどやるべきだと思います! :)

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

関連する問題