23. Tiles タグライブラリ2
Struts 23章 Tiles タグライブラリ2
- 23.1. definition タグ / put タグ
- 23.2. putList タグ / add タグ
23.1. definition タグ / put タグ
definition タグ・put タグは Tiles 設定ファイルの definition 要素・put 要素に相当するタグです。definition タグは定義 (タイルの組み合わせ) を JavaBean として生成し、put タグは定義等にタイル属性 (要素) を追加します。put タグは、insert タグか definition タグの中でしか使用できません。
definition タグに定義されている属性を以下に示します。
属性名 | 必須 | スクリプト 可能 |
説明 |
---|---|---|---|
extends | ○ | Tiles 設定ファイル中の継承元となる定義名を指定します。definition タグで定義した定義は継承できないので注意してください。 | |
id | ○ | 新しく作られる定義 Bean の名前を指定します。 | |
page | ○ | 挿入するタイル、テンプレート、コンポーネントの URL を指定します。 | |
role | ○ | この定義を挿入する前にチェックするロールを指定します。 | |
scope | 新しく定義する JavaBean を作る変数スコープを指定します。指定しない場合、JavaBean は、page スコープで作られます。 |
以下は put タグに定義されている属性です。
属性名 | 必須 | スクリプト 可能 |
説明 | ||||||
---|---|---|---|---|---|---|---|---|---|
beanName | ○ | 挿入対象となるコンポーネントの名前を指定するのに使用される JavaBean の名前を指定します。 | |||||||
beanProperty | ○ | beanName 属性で指定した JavaBean のプロパティを指定します。 | |||||||
beanScope | JavaBean を検索するスコープを指定します。任意の JSP スコープ、component、template のいずれかを指定します。デフォルトは page スコープです。 | ||||||||
name | タイル属性の名前を指定します。 | ||||||||
role | ○ | このタグを実行するのに必要な role があれば指定します。 | |||||||
type | コンテンツの型を指定します。string, page, template, definition のうちいずれかを指定します。
|
||||||||
value | ○ | タイル属性の値を指定します。 |
18章の 2節で説明した Tiles 設定ファイルを、Tiles タグライブラリを使用して書き換えると以下のようになります。
<%@ page contentType="text/html; charset=EUC-JP" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<tiles:definition id="main" page="/WEB-INF/jsp/layout.jsp">
<tiles:put name="title" value="ヘッダー" />
<tiles:put name="menu">/WEB-INF/jsp/menu.html</tiles:put>
<tiles:put name="content" value="/WEB-INF/jsp/content.jsp" />
</tiles:definition>
...
定義を使用するには JSP ページの任意の場所で insert タグを使用して include します。
<tiles:insert beanName="main" flush="true"/>
JSP でタイル定義を管理する際、通常は定義用の JSP ページを用意し、各 JSP ページで include して使用するのが管理の点で望ましいでしょう。しかし、定義を使用する各ページで include するのも煩雑です。特に理由がない限り定義は Tiles 設定ファイルで管理するのが良いでしょう。
(実習課題1)
19章の実習課題2の Web アプリケーションを改良しなさい。
- Tiles 設定ファイルを使用しないこと。
(実習課題2)
19章の実習課題2の Web アプリケーションを改良しなさい。
- definition タグの extends 属性を使用し、ヘッダ部が異なるページを作成すること。
- 定義用の JSP ページを用意し、各ページで include すること。
- 生成した定義 JavaBean は application スコープに登録し、include の度に新たな定義 JavaBean が生成されないようにすること。