Struts Tiles

Struts Tilesについて大方理解することができました。
以下の本を読みながらサンプルを実行して勉強しています。



Tilesの定義の仕方を概念図で表すと下図の様になります。

これらレイアウトと実jspのセットはTilesの設定ファイルをルールとして結合され、表示されます。Actionクラスが参照できる用に、論理名を定義します。


これによって、ページ構成の設定ファイルが外部に取り出され、より汎用性の高いプログラム作成を行うことができます。また、継承の考え方を持っており、ボディ部分だけ別のページを使った同じレイアウトの定義を簡単に作る事ができます。


以下にTiles設定ファイルの例を示します。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">

<tiles-definitions>
<definition name="layoutTest"
path="/view/layout.jsp">
<put name="title" value="レイアウトテスト">
<put name="header" value="/view/header.jsp">
<put name="menu" value="/view/menu.jsp">
<put name="body" value="/view/body.jsp">
<put name="footer" value="/view/footer.jsp">
</definition>
</tiles-definitions>


また、レイアウト用のJSPはこんな感じです。

<%@page contentType="text/html; charset=UTF-8" %><%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<html>
<head>
<title>
<style type="text/css">
td { ボーダーの属性をお好みでCSSで }
</style>
</head>
<body>
<table border="0" width="100%" cellspacing="5">
<tr>
<td colspan="2">
</tr>
<tr>
<td width="140" valign="top">
<tiles:insert attribute="menu" />
</td>
<td valign="top" align="left">
<tiles:insert attribute="body" />
</td>
</tr>
<tr>
<td colspan="2">
<tiles:insert attribute="footer" />
</td>
</tr>
</table>
</body>
</html>