ビューを整理する方法を選択しようとしています(spring-mvcを使用しますが、それはあまり重要ではありません)
私が見る限り、6つのオプションがあります(相互に排他的ではありませんが):
- タイル
- サイトメッシュ
- フリーマーカー
- 速度
<jsp:include>
<%@ include file="..">
タイルとサイトメッシュはグループ化できます。FreemarkerとVelocityも同様です。各グループ内でどれを使用するかは、この議論の問題ではありません。それについては十分な質問と議論があります。
これは興味深い読み物ですが、タイルを使用するように説得することはできません.
私の質問は、これらのフレームワークは、JSTLで適切に実行できないものを何を提供するかということです。 <@ include file="..">
主なポイント (一部は記事から引用):
ヘッダーやフッターなどのページの一部を含める- 以下の違いはありません:
<%@ include file="header.jsp" %>
と
<tiles:insert page="header.jsp" />
タイトル、メタタグなど、ヘッダーでパラメーターを定義します。これは、特に SEO の観点から非常に重要です。テンプレート オプションを使用すると、各ページで定義するプレースホルダーを簡単に定義できます。ただし、 JSTLを使用して jsp で(インクルード ページで
<c:set>
) と<c:out>
(インクルード ページで)を使用できます。レイアウトの再編成- ブレッドクラムをメニューの上に移動する場合、またはログイン ボックスを別のサイド パネルの上に移動する場合。ページ インクルージョン (jsp を使用) が適切に整理されていない場合、そのような場合、すべてのページを変更する必要がある場合があります。しかし、レイアウトが過度に複雑でなく、共通のものをヘッダー/フッターに配置する場合は、心配する必要はありません。
共通コンポーネントと特定のコンテンツとの結合- これには問題はありません。一部のフラグメントを再利用する場合は、ヘッダー/フッターを含まないページに移動し、必要な場所に含めます。
効率-
<%@ include file="file.jsp" %>
一度コンパイルされるため、何よりも効率的です。他のすべてのオプションは、何度も解析/実行されます。複雑さ- jsp 以外のすべてのソリューションには、追加の xml ファイル、追加のインクルード、プリプロセッサ構成などが必要です。また、サポートと変更が面倒になります。何が起こっているのかを理解するために、多くのファイル/構成を確認する必要があります。
プレースホルダー- 速度/フリーマーカーは JSTL 以外のものを提供しますか? JSTL では、プレースホルダーを配置し、(コントローラーによってリクエストまたはセッション スコープに配置された) モデルを使用してこれらのプレースホルダーを埋めます。
したがって、プレーンな JSP の代わりに、またはプレーンな JSP に加えて、上記のフレームワークのいずれかを使用する必要があることを確信してください。