私は自分のビューを整理する方法を選択しようとしています(spring-mvcを使用しますが、それほど重要ではありません)
私が見る限り、6つのオプションがあります(ただし、相互に排他的ではありません)。
- タイル
- Sitemesh
- フリーマーカー
- 速度
<jsp:include>
<%@ include file="..">
タイルとSitemeshはグループ化できます。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の代わりに/に加えて上記のフレームワークのいずれかを使うべきだと私に納得させます。