全体的に、私はタイルズよりSiteMeshをお勧めします。どのようにセットアップSiteMesh 3
あなたはページ内のテンプレート用のタイルを使用しますが、サイト全体のテンプレートのSiteMeshを使用することができますへ
Here's。それにもかかわらず...タイルはあまり吸うようにする方法
:コンフィギュレーションを超える
使用規則。たとえば、定義をwebapp/WEB-INF/tiles.xml
に入れて、それがどこにあるかをタイルに伝える必要はありません。
ワイルドカードを使用:
<definition name="default" template="/WEB-INF/templates/default.jsp">
<put-attribute name="titleKey" value=""/>
<put-attribute name="body" value=""/>
</definition>
<definition name="*" extends="default">
<put-attribute name="titleKey" value="{1}.title"/>
<put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>
お使いのコントローラが返す名前index
を表示した場合、それは定義*
に合わせて、ボディ用JSPファイル/WEB-INF/views/index.jsp
を使用します。メッセージプロパティindex.title
を使用します。お使いのコントローラが返す名前contact-us
を表示した場合
、それは定義*
に合わせて、ボディ用JSPファイル/WEB-INF/views/contact-us.jsp
を使用して、あなたのテンプレートでは、メッセージのプロパティcontact-us.title
を使用しますが、追加します。
<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>
と
<title><spring:message code="${titleKey}"/></title>
サーブレットAPにReloadableResourceBundleMessageSource
Beanを追加します。 plication文脈。
のような内容で、ファイル/src/main/resources/messages.properties
を行います
index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us
私はあなたのケースでsitemeshは何が必要以来、より良いアプローチは、ちょうど2つのテンプレート、シンプルであることができると思います。設定したら、それを忘れることができます。 – jddsantaella