log

日記です

Struts2とTilesの同居

Struts2をベースに作成しているWebアプリにTilesをインストールしました。
Struts2では、Result Typeにtilesが用意されていますが、それは使用せずに使用する方法をとりました。
参考にしたサイトはこちらです

私のStruts−Tilesインテグレーション - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockitフルスタックJAVAフレームワーク
http://d.hatena.ne.jp/nikkei225f/20071101/1193933088

web.xmlにlistenerを追加
<!-- web.xml に追加 -->
<listener>
	<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
/WEB-INF/tiles.xmlを作成
<!-- WebContent/WEB-INF/tiles.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
    "http://tiles.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="デフォのタイトル" />
		<put-attribute name="menu" value="/WEB-INF/tiles/menu.jsp" />
		<put-attribute name="body" type="string"><![CDATA[override]]></put-attribute>
		<put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
	</definition>
</tiles-definitions>
layout.jsp、layoutファイル
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib
	uri="/struts-tags" prefix="s"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<!-- scriptとか読みこもう -->
<script type="text/javascript" src="../js/jquery.js"></script>

<title><tiles:insertAttribute name="title" /></title>
</head>
<body>
	<tiles:insertAttribute name="menu" />
	<div class="container">
		<div class="content">
			<tiles:insertAttribute name="body" />
		</div>
		<tiles:insertAttribute name="footer" />
	</div>
</body>
</html>
/WEB-INF/content/tekitou.jsp

Struts2がディスパッチするjspファイル。
普通に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">
		<h1>うぇーい</h1>
		<p>うぇいうぇい</p>
	</tiles:putAttribute>
</tiles:insertDefinition>

あと、menu.jspとかfooter.jspとかを適当に作成する。
あ、あと必要なjarファイルとか入れる必要あるや。

うう

  • tiles.xmlで使用するファイルとかデフォルトの値を登録
  • layout.jspで大枠を作成
  • jspファイルから、
    • 使用するlayoutファイルを選ぶ
    • 必要な値はオーバーライドする