Struts2.1とTiles

今回のアプリケーションではApacheのtilesを使っています。
Struts2と連携するためにはweb.xmlに以下の記述が必要です。

    <listener>
       <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>

Tilesを使用するためには以下のJARファイルが必要です。

tiles-api-2.2.0.jar
tiles-core-2.2.0.jar
tiles-jsp-2.2.0.jar
tiles-servlet-2.2.0.jar
tiles-template-2.2.0.jar

Tilesのテンプレートの例は以下の様になります。

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

  <definition name="nomenu.layout" template="/WEB-INF/tiles/layout.jsp">
    <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/tiles/noMenu.jsp" />
    <put-attribute name="body" type="string"></put-attribute>
    <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
  </definition>
  
  <definition name="menu.layout" extends="nomenu.layout">
    <put-attribute name="menu" value="/WEB-INF/tiles/menu.jsp" />
  </definition>
    
</tiles-definitions>

Tilesを利用したJSPファイルの例です。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<html>
<tiles:insertDefinition name="menu.layout">
<tiles:putAttribute name="body">
<s:include value="../jsp/retrieveResult.jsp"></s:include>
</tiles:putAttribute>
</tiles:insertDefinition>
</html>

menyu.layoutというテンプレートを使用し、bodyの部分に../jsp/retrieveResult.jspを埋め込む内容になっています。