Tomcat 5 をコンテナーとして使用して、SiteMeshをレガシー アプリケーションに統合しようとしています。main.jspシンプルなデコレータで飾っています。
ではdecorators.xml、デコレータを 1 つだけ定義しました。
<decorators defaultdir="/decorators">
<decorator name="layout-main" page="layout-main.jsp">
<pattern>/jsp/main.jsp</pattern>
</decorator>
</decorators>
このデコレータは、手動で に移動すると機能しhttp://example.com/my-webapp/jsp/main.jspます。ただし、サーブレットが jsp へのリダイレクトを行う代わりにforwardを行う場所がいくつかあります。
getServletContext().getRequestDispatcher("/jsp/main.jsp").forward(request, response);
これは、URL がhttp://example.com/my-webapp/servlet/MyServletjsp ファイルではなく のようなものにとどまり、装飾されていないことを意味しdecorators.xmlます。
<pattern>/*</pattern>で装飾する必要のない他のjspがあるため、できませんlayout-main.jsp。場合によっては転送される可能性がある<pattern>/servlet/MyServlet*</pattern>ため、できません。MyServletmain.jsperror.jsp
サーブレットの動作を大幅に変更せずに、これを回避する方法はありますか? これはレガシーアプリなので、変更する自由があまりないので、これを修正する構成上の何かを望んでいます.
SiteMesh のドキュメントは、実際にはそれほど優れていません。私はディストリビューションに付属しているサンプル アプリケーションに基づいて作業を進めてきました。私は SiteMesh が本当に好きで、この場合でも動作することを望んでいます。