Apache Tiles3を使ってみる
メモです。ベースはSpring3です。
リファレンス : https://tiles.apache.org/framework/index.html
サンプルソース : https://github.com/howdy39/ApacheTiles3Sample
pom.xml
org.apache.tilesを追加
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.4</version> </dependency>
web.xml
リスナー追加
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
mvc-config.xml
元々あったInternalResourceViewResolverにorderを追加しています。優先順位かな。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/" /> <property name="suffix" value=".jsp" /> <property name="order" value="2" /> </bean> <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"> <property name="order" value="1" /> </bean> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/tiles-definitions.xml</value> </list> </property> </bean>
tiles-definitions.xml
baseLayoutでベースを指定してsample1で各々の読み込ませたいメッセージやJSPを指定
<?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="baseLayout" template="/WEB-INF/view/layout/layout.jsp"> <put-attribute name="header" value="/WEB-INF/view/layout/header.jsp" /> <put-attribute name="footer" value="/WEB-INF/view/layout/footer.jsp" /> </definition> <definition name="sample1" extends="baseLayout"> <put-attribute name="message" value="This is sample1 message" /> <put-attribute name="content" value="/WEB-INF/view/sample1.jsp" /> </definition> </tiles-definitions>
layout.jsp
冒頭でtilesを読み込んでいます
tiles:insertAttributeでjspを読み込み
tiles:getAsStringで文字列を読み込み
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <div> <div class="body"> <tiles:insertAttribute name="header" /> <div class="body-content"> <h2><tiles:getAsString name='message' /></h2> <tiles:insertAttribute name="content" /> </div> <tiles:insertAttribute name="footer" /> </div> </div> </body> </html>