2012-03-08 11 views
3

JSFでのSpring Web Flowに関する質問があります。のような相対ビューをロードできるようにSpring Web Flowを教えるにはどうすればいいですかview = " pages/view.xhtml " tomcat webappのクラスパスにあるjarファイルから? googleを介していくつかの研究の後、私は思う、そのWebフローは、ボックスの外にこの星座をサポートしていません。 - フローが複数のFlowRegistriesに登録されている(私は春のコンテキスト内のすべてのflowRegistriesを見つけカスタム実装を実装することにより、この問題を解決し) - フローはいずれかのファイルとして常駐することができ :私の質問を理解するのに役立つかもしれないjarファイルからロードされたフロー内のビュー状態の相対ビュー

いくつかの状況、クラスパスの外側またはクラスパスのjar内のリソース、すなわちファイルressourceフローはWEB-INF/confのどこかにあり、jarファイル内の同じ位置にあります。 - フロー定義のビューは、フロー定義ファイルに対して相対的にアドレッシングされます。

ここで、フローが存在する両方のコンステレーションがある理由について質問することがあります。現時点では、特定のドメインに属するすべての機能を含むwebappモジュールを大量に抽出しようとしています。このアプローチは、そこに関連するすべての成果物を、単一のプロジェクト内にバンドルして、jarとして構築してwebappに追加することができます。

設定ファイルの場所を知らなくても、各jarにSpring Beanをロードすることは問題ありませんが、Web Flowはいくつかの問題を引き起こします。

最初の問題は、flowRegistryが手前で何かをしなければ分割できないモノリスであることでした。この問題は、カスタムフローレジストリによって解決されます。

しかし、今、私は第二の問題に来た:documentationで説明したようにビューステートの中で、我々は、比較的フロー定義にページを参照:

私は、このようなビューステートに入る今
<view-state id="some-id" view="pages/somepage.xhtml"> ... </view-state> 

、ウェブ流れは、この方法がサポートされていないことを私に告げる例外をスロー: workaround for webflows in jars

0123:周りグーグル

A ContextResource is required to get relative view paths within this context; 
the resource was ... 

は、この可能な解決策を育てました

しかし、この回避策は、複数のフローレジストリに問題があるため動作しません。

もう一つの選択肢は、すべてを瓶に入れないことかもしれませんが、それが良いアイデアかどうかはわかりません。おそらく、jarのクラスパスからロードできるものと、定義された構造内の純粋なファイルとして残りのものがあります。

アイデア?あなたの努力とヒントをありがとうございます。

答えて

2

質問の目標を達成する方法について、数時間かけてアプリケーションを試してデバッグした後に、私は少し違う解決策を見つけました。変更する

  1. 最初の事は、私は、ビューステートに相対参照から切り替え
  2. わずかな変更で私の問題を解決するために私が有効になっているか、理由はサーブレットAPI仕様の変更によりTomcatの6からのTomcat 7に進みました絶対アドレス指定
  3. JSFまたはSpring Webflowに必要なすべてのファイルリソースをMETA-INF/resourcesに配置する必要がある新しいサーブレットAPIに合わせてjarファイルのディレクトリ構造を変更しました(Javadoc of ServletContext getResourceそれは私が必要なものを指定します)

これら3つの手順を実行すると、Webflowとそのリソースをjarファイルに完全にパックできました。

関連する問題