Struts2(tiles) では, ライブラリや, 設定についてでした。今回は, テンプレートをつくって, 同じテンプレートを拡張して, 他のページをつくることについてです。
1. テンプレートの作成
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE html>
<html>
<head>
<title><tiles:insertAttribute name="title"/></title>
<tiles:insertAttribute name="script" />
</head>
<div id="container">
<div id="head">
<tiles:insertAttribute name="head" />
</div>
<div id="content">
<tiles:insertAttribute name="body" />
</div>
<div id="foot">
<tiles:insertAttribute name="footer" />
</div>
</div>
</html>
前回に引き続き, 1段組のレイアウトです。さらに JavaScript ようのtiles を入れました。
2. tiles.xml の設定
<?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/struts-2.0.dtd ">
<tiles-definitions>
<definition name="index" template="/WEB-INF/jsps/index.jsp">
<put-attribute name="title" value="Resource Editor"/>
<put-attribute name="script" value="/WEB-INF/jsps/scripts.jsp"/>
<put-attribute name="head" value="/WEB-INF/jsps/header.jsp"/>
<put-attribute name="body" value="/WEB-INF/jsps/main.jsp"/>
<put-attribute name="footer" value="/WEB-INF/jsps/footer.jsp"/>
</definition>
<definition name="product" extends="index">
<put-attribute name="script" value="/WEB-INF/jsps/product/scripts.jsp"/>
<put-attribute name="body" value="/WEB-INF/jsps/product/product.jsp"/>
</definition>
<definition name="files" extends="index">
<put-attribute name="script" value="/WEB-INF/jsps/files/scripts.jsp"/>
<put-attribute name="body" value="/WEB-INF/jsps/files/files.jsp"/>
</definition>
</tiles-definitions>
tiles の設定です。 今回, index というテンプレートをつくりました。その上で, そのindex のページ要素をりようしつつ. パーツを少し変更したものを使う product と files というページを作りました。
<definition name="product" extends="index"> ここで, extends というキーワードを使い, index と
を拡張しますよという意味を加えます。
products では, index の要素を使いつつ, script と body のところは独自のものを使いたいという設定を書いています。
このように, Java のクラスの拡張のように, ページを作っておいて, 一部をoverride するようなことがtiles ではできるわけです。
0 件のコメント:
コメントを投稿