apacheが提供しているフレームワークで、SpringでもStrutsでも使用できます。
このフレームワークは、HTMのLデザインをテンプレート化することができます。
具体的に見てみた方が早いので、サンプルを見てみることにしましょう!
【サンプルテンプレート(JSPファイル)】
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles
" prefix="tiles" %>
<html>
<head>
<title><tiles:getAsString name="title"/></title>
</head>
<body>
<table>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td colspan="2">
<tiles:insertAttribute name="footer" />
</td>
</tr>
</table>
</body>
</html>
insertAttribute でfooterが割り当てられています。
footerにどのJSPファイルを当てはめるかは定義ファイルという別ファイルで定義します。
titleのような文字列も定義ファイルで別に記述できます。
ですので、1つのテンプレートファイルを何度も再利用して画面を作っていくことができます。
特に画面デザインがほとんどの画面で同じときはテンプレートファイルは1種類か2種類くらいですみます。
tilesを使用しなければ、
100画面くらい存在するシステムで「デザインを変更したい」となると、100個のJSPファイルを変更しなければならないでしょう。
でもtilesを使用すれば1ファイルを変更するだけです。
これがtilesが重宝される理由です。
逆にすべての画面が違うデザインになるような場合は使用しない方がいいかも知れないです。
【補足】
tilesの定義ファイルはXMLになっていて、1画面につき1つのタグで記述されます。
つまり100画面あれば100個分の定義を書く必要があります。
それを軽減してくれるのが、tiles2.1以降のワイルドカードの機能です。
以下のような感じで記述できます!
<definition name="test.definition*.message*" template="/layout.jsp">
<put-attribute name="title" value="This definition has a message: {2}."/>
<put-attribute name="header" value="/header.jsp"/>
<put-attribute name="body" value="/body{1}.jsp"/>
</definition>
これならJSPファイル名と画面定義名の命名規則さえ決めておけば自動で割り当てられそうですね!
しかしSpringの場合、tiles2.1系のものは使用できないようです。
自作でConfig用のクラスを作成すればいけるそうですが、JavaのバージョンやTomcatのバージョンによっては
できないかもしれません。
この辺は以下の参考のtilesについてに記述してみましたので参考にしてみてください!
参考: