19. レイアウト
19.1. Tileの挿入
この章では、前章で例示した以下のレイアウトで構成されるページを、Tilesで作成する方法について説明します。
ヘッダー |
|
メニュー | コンテンツ |
フッター |
作成にはTilesタグライブラリを使用しますので、まずその設定を行います。Strutsのlibディレクトリに「struts-tiles.tld」ファイルがありますので、このファイルを適当なディレクトリに追加してください。そしてweb.xmlに以下の設定を追加してください。
<taglib> <taglib-uri>http://jakarta.apache.org/struts/tags-tiles</taglib-uri> <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location> </taglib>
続いて、先ほどのレイアウトに従ったJSPページを作成します。前章で作成した「/WEB-INF/jsp/layout.jsp」に置き換えてください。このJSPページでは、<table>を使用してレイアウトを行っています。
<%@page contentType="text/html; charset=EUC-JP" %> <%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %> <html><body> <table width="100%"> <!-- ヘッダー部分--> <tr><td colspan="2"><tiles:insert page="/WEB-INF/jsp/header.html" /></td></tr> <tr> <!-- メニュー部分--> <td width="20%"><tiles:insert page="/WEB-INF/jsp/menu.html" /></td> <!-- コンテンツ部分--> <td><tiles:insert page="/WEB-INF/jsp/content.jsp" /></td> </tr> <!-- フッター部分--> <tr><td colspan="2"><tiles:insert page="/WEB-INF/jsp/footer.html" /></td></tr> </table> </body></html>
ここで使用している<tiles:insert>タグは、指定したリソースをincludeするタグです。「page」属性で指定されたリソースをincludeして出力します。リソースはアプリケーションルートからのパスか、JSPページからの相対パスで指定します。「page」属性の代わりに、「template」「component」属性を用いても同じです。<jsp:include>アクションを用いても同じ機能を実現できますが、<tiles:insert>の方が高度な機能を持っているのでこちらを使用します。それらの機能については後述します。
include先のリソースを準備し、上記JSPページを使用したTilesの組み合わせを表示させると、最初に示したレイアウトに従ったページが表示されます。
(実習課題1)
サンプルで示したレイアウトに従ったページを2つ以上用意し、Tilesを用いて表示させること。
- コンテンツの部分は異なったものにすること。
- コンテンツの部分以外は同じにすること。
- メニューは、それぞれのURLへのリンクとする事。