私のStruts−Tilesインテグレーション
あまり同じようにしている設定を知らない。何故だろう?無駄な記述が不要でイケてると思うんだが。
tiles.xml にはレイアウトdefinitionだけを書く
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://struts.apache.org/dtds/tiles-config_2_0.dtd"> <tiles-definitions> <definition name="default.layout" template="/WEB-INF/tiles/layout.jsp"> <put-attribute name="title" value="default title"/> <put-attribute name="head" value="/WEB-INF/tiles/head.jsp" /> <put-attribute name="header" type="string"><![CDATA[override]]></put-attribute> <put-attribute name="body" type="string"><![CDATA[override]]></put-attribute> <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp"/> </definition> </tiles-definitions>
個別のページ では 必要に応じてパーツをオーバーライド、例えば一般的な title と body のオーバーライドは
/ja/hello.jsp
<%@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:putAttribute> </tiles:insertDefinition>
となる。
そして struts.xml の result の dispatch先には 個別のJSPを設定する。※dispatch先はJSPなので type="tiles" では無く通常の type="dispatcher"
<result>/hello.jsp</result>
result はLocale切り替え対応にしているので
/en/hello.jsp に英語ページを用意すれば、ブラウザのLocaleがenなら英語の方が表示される。