2011-10-28 6 views
1

記事hereを見ると、Jerseyを使用してJSPビューを解決するためにTemplateProcessorを使用する方法の例があります。どうやらこのクラスは廃止され、ViewProcessor <T>に置き換えられました。私はどちらかを実装する方法について幾分混乱しています(推奨されていないので、新しいものが推奨されます)。テンプレート引数として何が入りますか?/WebContent/WEB-INF/views/*内のjspを単純に解決し、返されたビューの式言語を評価するには、どうすれば実装できますか?カスタムViewProcessorを実装する方法<T>(jax-rs)?

ViewProcessor article is here.

感謝。

答えて

3

新しいタイプのテンプレートをサポートする場合は、ViewProcessorを実装する必要があります。 JSPテンプレートが必要な場合は、すでにJerseyに組み込まれており、独自のViewProcessorを実装する必要はありません。

JSPファイルがWEB-INF/viewsの下にある場合は、JSP_TEMPLATES_BASE_PATHのinitパラメータをWEB-INF/viewsに設定できます。次に、あなたのリソースメソッドからViewableの新しいインスタンスを返すだけで(あなたが参照しているPaulのブログで示されているように)、テンプレート名を最初のパラメータとして渡し、データ(モデル)をコンストラクタの2番目のパラメータとして渡す必要があります。 JSPでは、「it」という名前の属性を使用してデータにアクセスできます。

更新:あなたのURLパターンが "/ *"の場合は、少し複雑です。 JerseyサーブレットはJSPをマスクしているので、Jerseyはコンテナに委譲するときにテンプレートを解決できません。 (単にあなたのweb.xmlにフィルタによってサーブレットの発生を置き換える代わりに、サーブレットのフィルタとしてジャージーサーブレットを登録

  1. :コンテナはJSPを見することができるようにするには、さらに2つのことを行う必要があり) - このjavadocのページの一番下を参照してください。http://jersey.java.net/nonav/apidocs/latest/jersey/com/sun/jersey/spi/container/servlet/package-summary.html
  2. は、フィルターにPROPERTY_WEB_PAGE_CONTENT_REGEXのinitのparamを追加し、JSPテンプレートマッチ(例えば「/WEB-INF/views/.*」という正規表現に設定します)

何らかの理由でカスタムViewProcessorを実装する必要があると思われる場合は、freemarkerビューの処理方法を確認できますSSORが実装されており、そのことでインスピレーションを得る - http://java.net/projects/jersey/sources/svn/content/trunk/jersey/contribs/jersey-freemarker/src/main/java/com/sun/jersey/freemarker/FreemarkerViewProcessor.java?rev=5453

+0

を参照してください、私は閲覧を返すために、初期化のparamと呼び出しを追加しようとしたが、ビューはまだ解決することはできません。 ' ​​com.sun.jersey.configを.property.JSPTemplatesBasePath WEB-INF /ビュー ' と は'新しい表示可能( "歓迎"、チェンジ)を返す; ' とでのwelcome.jspファイルをWEB- INF/views/welcome.jsp – Blaskovicz

+0

OK。これは、記事に記載されているように、Jerseyは/ /のディレクトリでテンプレートを探しているためです。つまり、Viewableを返すリソースクラスがcom.acme.myproject.FooResourceで、 "welcome"を探している場合、JerseyはWEB-INF/views/com/acme/myproject/FooResource/welcomeという名前で探します。 jsp。あなたのテンプレートがテンプレートの基本パスのルートにある場合、テンプレート名の前にスラッシュを付ける必要があります。つまり 'return new Viewable("/welcome "、changeList);' –

+0

これは意味があります。私はどちらか - 私は未解決の例外を取得していないが、私はどちらかのビュー(HTTP 404)を見ていないよ。私のサーブレットのurl-patternが/ *であることは重要ですか?追加のアイデアはありますか?私は本当に困っている/欲求不満。 – Blaskovicz

関連する問題