目次へ

23. Tiles タグライブラリ2

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 のうちいずれかを指定します。
string : 値は文字列として使用されます。
page | template : 値は挿入するページの URL として使用されます。
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 が生成されないようにすること。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp