私の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なら英語の方が表示される。