Tiles定義により、表示できるコンテンツの一部が定義されます。各定義は、1つのレイアウト・ファイルにコンテンツ・ファイルを移入する方法を指定します。
Tiles定義は、個別のページに含めるか、またはTiles定義ファイルに集約できます。
ここでは、次の内容について説明します。
Tiles定義は、レイアウト・テンプレートを指定し、そのレイアウトの移入に使用できるコンテンツ・ファイルのセットを1つ指定します。
Webアプリケーションのすべてのページに対して1つのレイアウト・テンプレートを定義した場合、アプリケーションに表示する異なる本文ページごとに1つの定義を作成できます。すると、アプリケーションにより、毎回まったく同じレイアウト・ページに、使用されている定義によって異なるコンテンツが各領域に移入されて表示されます。
Tiles定義は、JSPページまたはTiles定義ファイルに含めます。
たとえば、JSPページに含める次の定義により、標準のレイアウト・ファイルへの移入方法を定義できます。
<tiles:definition id="welcome" page="layoutPage.jsp">
<tiles:put name="title" value="Welcome page"/>
<tiles:put name="header" value="/header.jsp"/>
<tiles:put name="menu" value="/menu.jsp"/>
<tiles:put name="body" value="/welcome.jsp"/>
<tiles:put name="footer" value="/footer.jsp"/>
</tiles:definition>
同じ定義をTiles定義ファイルに含める場合、次のようになります。
<tiles-definitions>
<definition name="welcome" page="/layoutPage.jsp">
<put name="title" value="Welcome page"/>
<put name="header" value="/header.jsp"/>
<put name="menu" value="/menu.jsp"/>
<put name="body" value="/welcome.jsp"/>
<put name="footer" value="/footer.jsp"/>
</definition>
</tiles-definitions>
これらの定義はいずれも、レイアウト・テンプレート・ページ/layoutPage.jsp
を使用し、ここにvalue
パラメータで指定されているテキストまたはコンテンツ・ページを移入することを指定しています。
Tiles定義は他のTiles定義を拡張できるため、Tiles定義の階層を作成できます。
Tiles定義を作成する際、他の定義を拡張するよう指定できます。新しい定義は親定義を継承し、親の属性をオーバーライドできます。
Tiles定義の拡張には、典型的な2つの用途があります。
マスター定義の空白の属性の定義を提供します。
マスター定義の属性をオーバーライドします。
たとえば、次にTiles定義ファイルのマスター・レイアウト・ページの定義の例を示します。タイトルとボディの属性は、オーバーライドする定義によって定義するよう、空白のままになっています。
<definition name="master" page="/layoutPage.jsp">
<put name="title" value=""/>
<put name="header" value="/header.jsp"/>
<put name="menu" value="/menu.jsp"/>
<put name="body" value=""/>
<put name="footer" value="/footer.jsp"/>
</definition>
次の定義により、空白の属性の定義を提供できます。
<definition name="welcome" extends="master">
<put name="title" value="Welcome"/>
<put name="body" value="/welcome.jsp"/>
</definition>
次の定義により、マスター定義のmenu
属性をオーバーライドし、一部のユーザーに対して別のメニュー・ファイルを含めることが可能です。
<definition name="admin" extends="master">
<put name="menu" value="/adminmenu.jsp"/>
</definition>
最後に、拡張の2つの使用方法を組み合せることにより、さらに別の定義により、拡張された定義の空白の属性に定義を提供できます。この拡張された定義の場合、title
およびbody
属性の値(マスター定義または拡張しているadmin
定義のいずれによっても定義されていない)を提供できます。
<definition name="adminwelcome" extends="admin">
<put name="title" value="Administration"/>
<put name="body" value="/adminwelcome.jsp"/>
</definition>
Tiles定義属性の値自体を、Tiles定義への参照として使用できます。このようにすると、Tiles定義の階層を作成できます。たとえば、次の定義を、3つの部分から構成されるtoptext
ヘッダーの作成に使用するとします。
<definition name="toptext" path="/top/toptext.jsp">
<put name="company" value="/top/company.jsp"/>
<put name="logo" value="/top/logo.jsp"/>
<put name="appname" value="/top/appname.jsp"/>
</definition>
マスター・レイアウト定義などの別の定義により、次のようにtoptext定義を参照できます。
<definition name="welcome" page="/layoutPage.jsp">
...
<put name="header" value="toptext"/>
...
</definition>
表示ページでTiles定義を使用するには、Tilesタグ・ライブラリのTilesタグを使用します。JDeveloperでTilesのinsert
タグを使用するには、「コンポーネント・パレット」および「Struts Tiles」ページを使用し、ページ上に「挿入」要素をドラッグできます。Strutsタグ・ライブラリの使用方法の詳細は、JDeveloperのStrutsカスタム・タグ・ライブラリについてを参照してください。
たとえば、次に示す、ページに含まれているTiles insert
タグにより、Tiles定義ファイル内のTiles定義に関する前の項で示されている定義と同じ結果が得られます。
<html>
...
<body>
...
<tiles:definition id="welcome" page="/layoutPage.jsp">
<tiles:put name="header" value="toptext"/>
</tiles:definition>
...
</body>
</html>
Tiles定義ファイルで使用される要素の詳細は、次を参照してください。
JSPページで使用される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
Copyright © 1997, 2006, Oracle. All rights reserved.