ネストしたTile
Tileの一部分でさらに別のTile定義を使用するような場合、ネストして使用することになる。
bodyをさらに top、center、bottom に分割する場合tiles.xmlで分割部分のdefinitionをし、
<definition name="default.layout_body" template="/tiles/layout_body.jsp"> <put-attribute name="top" type="string"><![CDATA[topです]]></put-attribute> <put-attribute name="center" type="string"><![CDATA[centerです]]></put-attribute> <put-attribute name="bottom" type="string"><![CDATA[bottomです]]></put-attribute> </definition>
layout_body.jspはとりあえずなんでもない、好きなようにレイアウトする。
<%@page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <%@ taglib prefix="s" uri="/struts-tags" %> <div id="top"> <tiles:insertAttribute name="top"/> </div> <div id="center"> <tiles:insertAttribute name="center"/> </div> <div id="bottom"> <tiles:insertAttribute name="bottom"/> </div>
そして、個別のページの方で次の様にしてネスト部分を取り込む
<%@page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <%@ taglib prefix="s" uri="/struts-tags" %> <tiles:insertDefinition name="default.layout"> <tiles:putAttribute name="title">タイトル</tiles:putAttribute> <tiles:putAttribute name="body"> <tiles:insertDefinition name="default.layout_body"> <tiles:putAttribute name="center"> ボディーの真ん中部分の上書き </tiles:putAttribute> </tiles:insertDefinition> </tiles:putAttribute> </tiles:insertDefinition>