TilesとJSPページについて

Tilesを使用すると、タイルというコンポーネントの再利用に基いてWebアプリケーションのJSPページを作成できます。

このトピックでは、次の項目について説明します。

Tilesでの再利用方法

Webアプリケーションのいくつかのページのレイアウトが同じである場合、JSPフラグメントを使用できます。各JSPページを定義するには、ページに含めるJSPフラグメントを指定します。いずれかのJSPフラグメントの名前を変更した場合、そのフラグメントを含んでいる各JSPファイルを変更する必要があります。

次の図に、表示ページでコンテンツを再利用する場合の従来の方法を示します。表示する各ページに、コンテンツを提供するファイルが個別に含まれます。

前のテキストで説明したシナリオを図示しています。

Tilesテクノロジでは、異なる方法で再利用を実現します。一般的なアプリケーションの場合、同様のすべてのページについて、レイアウト・テンプレート・ページという1つのページのみを作成し、これをすべての異なるWebページ・コンテンツの表示に使用します。レイアウト・テンプレートでは、コンテンツを含める必要のあるすべての領域を指定します。つまり、必要なすべてのインクルードの領域を定義します。別の定義ファイルで、ユーザーに表示する各個別のページについて、各インクルードに使用する実際のコンテンツを定義します。異なる組合せは、それぞれ別の定義にします。これにより、レイアウト・テンプレート・ファイルのインクルード自体は変更されることがありません。

次の図で、1つのTilesレイアウト・ページを異なるコンテンツで再利用できる様子を示します。

前のテキストで説明したシナリオを図示しています。  

Tiles定義は階層として作成できます。内部の定義は、外部の定義を拡張し、外部の定義のすべての属性を継承します。

要約すると、Tilesを使用する場合はまずレイアウトを定義し、次にレイアウトにコンテンツを移入する方法を定義します。(ページにファイルまたはフラグメントを含める場合、各ページごとに移入方法を個別に定義する必要があるのとは対照的です。)

コンテンツ・ページ

コンテンツ・ページには、表示ページの各領域に表示するHTMLが含まれます。これらのページは、単純なJSPページです。

これらのページのコンテンツは、アプリケーションで表示される前に別のページに含まれるため、コンテンツ・ページには、インクルードするHTMLのみを含めます。たとえば、アプリケーションでスタイル・シートを使用する場合、すべてのコンテンツ・ページにスタイル・シートへの参照を含める必要はありません。かわりにレイアウト・ファイルに含めることが可能です。

たとえば、アプリケーションで標準的なヘッダー、メニュー、本文およびフッターというレイアウトを使用している場合、ヘッダー、メニューおよびフッター用のコンテンツ・ファイル、および各本文ファイルごとに1つのコンテンツ・ファイルを作成します。

レイアウト・ページ

レイアウト・ページにより、アプリケーションのページのレイアウト構造を定義します。

次に、上部にヘッダー、左にメニュー、右に本文ファイル領域、および下部にフッター領域が含まれているレイアウトを定義するレイアウト・ページの例を示します。

前のテキストで説明したシナリオを図示しています。

このレイアウトを定義するレイアウト・ファイルは次のようになります。tiles:insertタグの属性に使用されている名前は、単なるプレースホルダです。

<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"%>
<html>
<head>
  <title><tiles:getAsString name="title"/></title>
  <link href="css/jdeveloper.css" media="screen" rel="stylesheet"/>
</head>
<body>
  <table cellspacing="5" border="0" width="95%">
    <tr>
      <td colspan="2"><tiles:insert attribute="header"/></td>
    </tr>
    <tr>
      <td><tiles:insert attribute="menu"/></td>
      <td><tiles:insert attribute="body"/></td>
    </tr>
    <tr>
      <td colspan="2"><tiles:insert attribute="footer"/></td>
    </tr>
  </table>
</body>
</html>    

定義によってこのレイアウトが使用される際、各属性に対して使用するファイルが指定されます。

Tiles定義

Tiles定義により、表示できるコンテンツの一部が定義されます。各定義は、1つのレイアウト・ファイルにコンテンツ・ファイルを移入する方法を指定します。

Tiles定義は、個別のページに含めるか、またはTiles定義ファイルに集約できます。「Tiles定義について」を参照してください。

Tiles定義は表示するコンテンツを指定するため、アプリケーションのページに後に挿入されるか、またはStrutsアプリケーションの場合はActionForwardsとして使用されます。


TilesとJSPページについて

Tiles定義の使用

Tiles定義ファイルで使用される要素の詳細は、次を参照してください。

リファレンス: Tiles定義要素

JSPページで使用されるTilesタグの詳細は、次を参照してください。

リファレンス: Tilesタグ・ライブラリ

Tilesの詳細および使用方法は、Apacheのサイトの説明を参照してください。

http://struts.apache.org/api/org/apache/struts/tiles/package-summary.html#package_description

Tilesタグ・ライブラリのリファレンス情報は、次のサイトを参照してください。

http://struts.apache.org/userGuide/struts-tiles.html

Tilesのユーザー・ガイドは、次のサイトを参照してください。

http://struts.apache.org/userGuide/dev_tiles.html