Struts + Tiles
現場でStrutsを使い始めて、はや半年!あまりに昔のことすぎていろいろ忘れているので、Tilesメモ(笑)
Tilesって
Tilesとは、簡単にいえば、画面をタイルのようにブロック分けして作成していくためのものってことになります。
Tilesを使うためには
Tilesを使うためには、いろいろ設定が必要になります。
今は「設定よりもルール!」の時代なのですが、なにせ古いものですから。
■tilesの設定
-
struts-tiles.tldを/WEB-INF/tld/配下に配置します。(場所は他のtldと同じでよいので、適時読み替えてください)
WEB-INF/lib配下にstruts-tiles-x.x.x.jarがあることが前提です。
- web.xmlにtilesの設定を追加
web.xmlに以下のようなtilesの設定を追加します。
【web.xml】<taglib> <taglib-uri>/tags/struts-tiles</taglib-uri> <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location> </taglib>
上記設定の場合、tilesを使いたい場合は、以下のようにjspに記述します。<%@taglib uri="/tags/struts-tiles" prefix="tiles" %>
※以下のパラメータを<servlet>タグ内に記入しないとあとでエラーが発生したので、ここでメモ。<init-param> <param-name>chainConfig</param-name> <param-value>org/apache/struts/tiles/chain-config.xml</param-value> </init-param>
-
struts-config.xmlにtilesを使うための設定を追加します。
<plug-in className="org.apache.struts.tiles.TilesPlugin" > <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="moduleAware" value="true" />
</plug-in> - tilesの設定ファイルを作成
/WEB-INF/tiles-defs.xmlを作成します。
【tiles-defs.xml】
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_3.dtd">
※このファイルはあとで、設定を追加しますので、新規作成としてはここまで。
■tilesを使ってみよう
- tiles-defs.xmlに画面構成を追加
設定手順で作成した、tiles-defs.xmlにtilesの画面設定を追加します。
【tiles-defs.xml】
<tiles-definitions> <definition name="tilesworld" path="/tilesworld.jsp"> <put name="title" value="ようこそTilesへ"/> <put name="header" value="/layout/header.jsp"/> <put name="footer" value="/layout/footer.jsp"/> </definition> </tiles-definitions>
上記は、tilesworld.jspをtilesworldとして登録していることになります。
さらにその設定値(値)として、title、menu、contentsと3つ用意して、それぞれに値を設定しています。
- JSPの作成
今回、作成するのは、tilesworld.jsp、/layout/header.jsp、/layout/footer.jspの3つ。
【tilesworld.jsp】
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="/tags/struts-html" prefix="html" %> <%@taglib uri="/tags/struts-tiles" prefix="tiles" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html:html> <head> <title><tiles:getAsString name="title"/></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <table border="1" width="100%"> <tr> <td valign="top"> <tiles:insert attribute="header"/> </td> </tr> <tr> <td valign="top"> ここにコンテンツが記述されます。 </td> </tr> <tr> <td valign="top"> <tiles:insert attribute="footer"/> </td> </tr> </table> </body> </html:html>
【header.jsp】
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> これがヘッダー!!
【footer.jsp】
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> これがフッター!!
- Strutsなので、Actionなどを作成
Strutsなので、ActionクラスやFormクラスを作る必要がありますが、今回はtilesのメモなのでそこらへんはスルーで、設定のみ。
【struts-config.xml】
<action path="/tilesworld" type="jp.co.test.actions.HelloWorldAction" className="jp.co.test.mapping.HelloWorldMapping" name="helloworld" validate="false" scope="session" input="/error.jsp"> <forward name="init" path="tilesworld" /> </action>
※前に作ったHelloWorldを参照してます。
違いは、forward内のpathがtiles-defs.xmlのnameと一致していることぐらいです。
以上、簡単ですが、Struts+Tilesのメモでした。