目次へ

20.3. 文字列・Tileのリスト

1節ではリンクのリストを作成しました。ここでは文字列・Tileのリストを作成して、それらを表示する方法について説明します。

Tiles設定ファイルで文字列のリストを作成するためには、<add>タグを使用します。

<definition ...>
  <putList name="textList">
    <add value="こんにちは" />
    <add value="さようなら" />
    <add><![CDATA[<img src="http://www.techscore.com/common/img/logo.gif">]]></add>
  </putList>
</definition>

value属性か、<add>タグのコンテンツに文字列を指定します。コンテンツで文字列を指定する場合には、必要に応じてCDATAセクションを使用するようにして下さい。例では<img>タグを指定しているので、CDATAセクションを使用しています。

続いてJSPページで設定したリストを表示します。

...
<tiles:importAttribute name="textList" />
<logic:iterate id="text" name="textList" type="java.lang.String">
  <bean:write name="text" filter="false" /><br>
</logic:iterate>
...

リンクの場合と方法は同じです。<tiles:importAttribute>タグで文字列のリストをpageスコープに読み込み、<logic:iterate>タグと<bean:write>タグを用いて、1つ1つの文字列を出力しています。<bean:write>タグはデフォルトでは「<」などの特殊文字をエンティティに置き換えて出力するため、置き換えずに出力するよう「filter」属性で「false」を指定します。このJSPページを表示させると、文字列と画像とが縦に並んで表示されます。

続いてTileのリストを作成する方法について説明します。Tileのリストを作成する場合にも、<add>タグを使用しますが、こちらの場合には「type」属性を指定します。

<definition ...>
  <putList name="pageList">
    <add value="/WEB-INF/jsp/header.html" type="page" />
    <add value="/WEB-INF/jsp/menu.jsp" type="page" />
    <add value="/WEB-INF/jsp/footer.html" type="page" />
  </putList>
  <putList name="definitionList">
    <add value="textList" type="definition" />
    <add value="calendar" type="definition" />
  </putList>
</definition>

「type」属性に「page」(または「template」)を指定した場合には、value属性の値はリソースへのパスとみなされ、「definition」を指定した場合には、他の組み合わせの名前とみなされます。これをJSPページで表示させるには、以下のようにします。

...
<tiles:importAttribute name="pageList" />
<logic:iterate id="pageItem" name="pageList" type="java.lang.String">
  <tiles:insert beanName="pageItem" flush="false" />
</logic:iterate>
<tiles:importAttribute name="definitionList" />
<logic:iterate id="definition" name="definitionList" type="java.lang.String">
  <tiles:insert beanName="definition" flush="false" />
</logic:iterate>
...

<tiles:importAttribute>と<logic:iterate>を使用するところまでは変わりません。リストからページのパスや組み合わせ名を読み込み、それをincludeするには<tiles:insert>タグを使用します。前節と同じです。なお繰り返しincludeを実行している場合、途中でフラッシュが行われるとエラーが発生しますので、「flush」属性に「false」を指定して下さい。

実は、Tiles設定ファイルでtype属性を指定しなくても、<tiles:insert>タグは正しく実行されます。目安程度のものだと考えて下さい。

(実習課題3)

実習課題2で作成したWebアプリケーションを改良しなさい。

  • ページのタイトルを、リンク名と異なる文字列にすること。
  • タイトルの指定は、Tiles設定ファイルで行うこと。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp