私はコンテナとしてTomcat 5を使用して従来のアプリケーションにSiteMeshを統合しようとしています。私は簡単なデコレータで飾っているmain.jsp
を持っています。私は手動でhttp://example.com/my-webapp/jsp/main.jsp
に行けばRequestDispatcherのforward()でSiteMeshを使用
<decorators defaultdir="/decorators">
<decorator name="layout-main" page="layout-main.jsp">
<pattern>/jsp/main.jsp</pattern>
</decorator>
</decorators>
このデコレータは動作します:decorators.xml
で
は、私はちょうど定義された1つのデコレータを持っています。
getServletContext().getRequestDispatcher("/jsp/main.jsp").forward(request, response);
これは、URLの代わりにJSPファイルのhttp://example.com/my-webapp/servlet/MyServlet
のようなものに留まり、したがって、ではないことを意味します。ただし、サーブレットは、代わりにJSPにリダイレクトを行うので、forwardを行い、いくつかの場所があります私はそれがdecorators.xml
のパターンと一致しないので、私は推測します。
で装飾する必要のない他のjspがあるため、<pattern>/*</pattern>
はできません。 MyServlet
はmain.jsp
に転送されることがあり、それ以外の場合はerror.jsp
に転送される可能性があるため、<pattern>/servlet/MyServlet*</pattern>
を送信できません。
サーブレットの動作を大幅に変更することなくこれを回避する方法はありますか?それはレガシーなアプリケーションなので、私は物事を変える自由がそれほどないので、これを修正する設定上の賢明なことを望んでいる。
SiteMeshのドキュメントは実際にはそれほど大きくありません。私は、配布に付属しているサンプルアプリケーションのほとんどを取り組んできました。私はSiteMeshが本当に好きです。この場合、私はそれを動作させることを望んでいます。
これは、転送されたリクエストにフィルタを適用して、転送されたJSPページにサイトメッシュデコレータを適用して機能しました。ありがとう! –
スカフマンに感謝します。これは私にとって大きな助けになりました! –
私はこれらの新しいディレクティブを見たことがありますが、それらのディレクティブはまだ必要ありませんでした。素晴らしいアドバイス。 –