問題:同じ構造の同じページが 2 つhome.jspあります。contact.jsp本文の内容とタイトルのみが異なります。tilesフレームワークを使用してレイアウト ページを作成し、2 つの のコードを再利用したいと考えていますJSP。コントローラーのフレームワークはまだ決まっていませSpring MVC 3んStruts 2。
解決策 A:JSPファイル/ビューをコントローラー/アクション クラスから直接呼び出す。
次のように単一の定義を記述しますtiles.xml。
<definition name="baseLayout" template="/WEB-INF/jsp/layout/baseLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/WEB-INF/jsp/includes/header.jsp"/>
<put-attribute name="body" value="" />
</definition>
現在baseLayout.jsp:
<html>
<head><title><tiles:insertAttribute name="title"/></title></head>
<body>
<div class="wrapper">
<div class="header"><tiles:insertAttribute name="header"/></div>
<div class="body"><tiles:insertAttribute name="body"/></div>
</div>
</body>
</html>
今home.jsp
<tiles:insertDefinition name="baseLayout">
<tiles:putAttribute name="title">
Title for home page
</tiles:putAttribute>
<tiles:putAttribute name="body">
Content for home page
</tiles:putAttribute>
</tiles:insertDefinition>
同様にcontact.jsp:
<tiles:insertDefinition name="baseLayout">
<tiles:putAttribute name="title">
Title for contact page
</tiles:putAttribute>
<tiles:putAttribute name="body">
Content for contact page
</tiles:putAttribute>
</tiles:insertDefinition>
ソリューション B:コントローラ/アクション クラスからtiles definition異なるファイルの を呼び出します。JSPこのアプローチでは、作成するファイルtiles definitionごとに1 つ必要です。JSPしたがって、全部で 3 つのタイル定義 (1 つは for でbaseLayout、他の 2 つは forhomeおよびcontact) です。
tiles.xml :
<definition name="baseLayout" template="/WEB-INF/jsp/layout/baseLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/WEB-INF/jsp/includes/header.jsp"/>
<put-attribute name="body" value="" />
</definition>
<definition name="home" extends="baseLayout">
<put-attribute name="title" value="Title for home page" />
<put-attribute name="header" value="/WEB-INF/jsp/home.jsp"/>
</definition>
<definition name="contact" extends="baseLayout">
<put-attribute name="title" value="Title for contact page" />
<put-attribute name="header" value="/WEB-INF/jsp/contact.jsp"/>
</definition>
baseLayout.jsp :Same as **Solution A**
home.jsp :Content for home page
contact.jsp:Content for contact page
上記のアプローチのどれに固執するべきかについてアドバイスが欲しい.