ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発
11gリリース1 (11.1.1.8.3)
E49666-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

11 ページ・テンプレートの開発

ページ・テンプレートでは、ポータル・ページでの共通領域の構造が提供されます。この章では、Oracle JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるWebCenter Portal Frameworkアプリケーションおよびポータルに表示されるポータル・ページ用のページ・テンプレートを設計および開発する方法について説明します。

この章の内容は、次のとおりです。

11.1 ページ・テンプレートの開発の概要

ページ・テンプレートでは、ユーザーの画面における個々のページおよびページ・グループの表示方法を定義し、ポータル・ページの構造とレイアウトの点における一貫性を確保します。つまり、ページ・テンプレートを変更すると、そのテンプレートを参照するすべてのページで自動的にその変更が継承されます。


関連項目:

ページ・テンプレートの一般情報は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のページ・テンプレートでの作業に関する項を参照してください。


JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。JDeveloperでは、完全に機能するページ・テンプレートを最初から構築するか、または特定の要件に適合するように既存のページ・テンプレートを調整して詳細に開発することができます。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。

ページ・テンプレートは次に示す方法で開発できます。

この項の内容は、次のとおりです。

11.1.1 ページ・テンプレートの構造の理解

ページ・テンプレートの標準的な要素は次のとおりです。

  • ヘッダー、コンテンツ領域(各ページで異なる)およびフッター。ヘッダーとフッターには、一般にブランド固有の要素が含まれます。たとえば、ヘッダーには通常、ロゴや、場合によってはスローガンが含まれます。フッターには通常、連絡先および著作権情報が含まれます。

  • ナビゲーション。ページ・テンプレートは、ポータルのナビゲーションをいくつかの方法で公開できます。たとえば、モバイル・デバイスの場合、ポータル・ナビゲーションは、ポップアップまたはスライド・イン/アウトとして表示されることがあります。デスクトップ・ブラウザの場合、通常、ポータル・ナビゲーションは、ページの上部(横並び)またはページの横側(縦並び)に表示されます。

  • ブランド要素。たとえば、ページ・テンプレートには、会社のロゴ、スローガン、または著作権に関するメッセージが含まれる場合があります。

  • リンクとアクション。たとえば、ログイン/ログアウトのリンク、ドロップダウン・メニュー、またはグローバル・リンク(Web管理者へのメール・メッセージの送信やプライバシ情報の表示などへのリンク)。

  • 条件要素。たとえば、ページの一部の要素は、ユーザーがパブリック・ユーザーか認証されたユーザーかによって、あるいは、ユーザーのロールおよび権限によってそれぞれ異なります。

図11-1に、これらの要素を示すページ・テンプレートに基づいたサンプル・アプリケーションを示します。

図11-1 ページ・テンプレートを使用するサンプル・ポータル

図11-1の説明が続きます
「図11-1 ページ・テンプレートを使用するサンプル・ポータル」の説明

11.1.2 ページ・テンプレートのレイアウトの理解

ページ・テンプレートの設計で最も重要な側面の1つは、テンプレートとページ・コンテンツの両方の要素でコンポーネントをどのようにレイアウトするかという点です。基本的に次の2つの方針があります。

  • 最も一般的なレイアウトは、フロー・レイアウトです。コンポーネントは、隣合せまたは縦並びで配置され、元々のサイズで表示されます。ページのコンテンツがブラウザ・ウィンドウのサイズを超えた場合、ブラウザのページにはスクロール・バーが表示されます。

  • ストレッチ・レイアウトは、ページ・コンテンツが大きな領域を占める場合や、ブラウザ・ウィンドウのサイズに応じてページ・コンテンツを拡大および縮小する場合に適している可能性があります。コンポーネントは、ページ上の使用可能なスペースいっぱいに表示されるようストレッチされます。たとえば、ストレッチ・レイアウトは、ページに表またはグラフが含まれていて、そのサイズにかかわらずコンテンツ領域全体にこれを表示する場合に適しています。また、編集領域が含まれるページで、コンテンツ領域と同じ高さと幅でエディタを使用する必要がある場合にも適しています。このレイアウトにはページ・コンテンツ用の領域があり、ブラウザ・ウィンドウのサイズ内にコンテンツが収まらない場合は、ページ上の領域にスクロール・バーが追加されます。つまり、個々のコンポーネントにスクロール・バーが表示されます(1ページ上に複数のスクロール・バーが表示されることがあります)。

    ストレッチにより、表示可能な領域を最大限使用できるようになります。タブ、アコーディオン、メニュー、ポップアップを使用して、表示可能な領域を拡張できます。ページにスクロール・バーが追加されると、コンテンツ領域がスクロールされる間、ナビゲーション領域、ページ・ヘッダーおよびページ・フッターはそのままビューに残ります。

ほとんどのWebサイトではフロー・レイアウトが使用されており、ユーザーが親しみやすく感じる見込みが高いため、フロー・レイアウトを使用することもできます。ただし、種類が豊富なダッシュボードとアプリケーション向けの場合やデスクトップ操作を模倣する必要がある場合には、ストレッチ・レイアウトが優れています。同一ページでフロー・レイアウトとストレッチ・レイアウトを結合することも可能です。

垂直方向の動作

レイアウトがフローであるかまたはストレッチであるかに応じて、次に示すようにページの垂直方向の動作が異なります。

  • フロー・レイアウト:

    • ヘッダーまたはフッターは常に表示されているわけではありません

    • ページの高さはページのコンテンツに基づいて計算されます

    • コンテンツが垂直方向にストレッチされることはありません

    • ブラウザにスクロール・バーが表示されることもあります

  • ストレッチ・レイアウト:

    • ヘッダーおよびフッターは常に表示されます

    • ページの高さはブラウザ・ウィンドウにより決まります

    • コンテンツは垂直方向にストレッチされます

    • コンテンツ領域にスクロール・バーが表示されることがあります。

水平方向の動作

レイアウトがフローであるかまたはストレッチであるかに応じて、次に示すようにページの水平方向の動作が異なります。

  • フロー・レイアウト:

    • ページにサイド・バー(左側のナビゲーションなど)がある場合でも、サイド・バーは常に表示されているわけではありません

    • ページの幅は固定値に設定されます

    • 一部のコンポーネントは、既存スペースを満たすようにストレッチされることがあります

    • ブラウザにスクロール・バーが表示されることもあります

  • ストレッチ・レイアウト:

    • ページにサイド・バー(左側のナビゲーションなど)がある場合、サイド・バーは常に表示されています

    • ページの幅はブラウザ・ウィンドウにより決まります

    • コンテンツは水平方向にストレッチされます

    • コンテンツにスクロール・バーが表示されることもあります。

11.1.3 ページ・テンプレートのレイアウト・コンポーネントの理解

ページ・テンプレートの基礎となる構造は、Oracle Application Development Framework (ADF)のレイアウト・コンポーネントによって指定されます。ページ・テンプレートで使用するのに適したレイアウトを決定したら(第11.1.2項「ページ・テンプレートのレイアウトの理解」を参照)、ADFレイアウト・コンポーネントを使用してページ・テンプレートを作成します。このタスクを実行するには、必要な構造とレイアウトを実現するためのADFコンポーネント、および使用するベスト・プラクティス(第11.2項「ページ・テンプレートの開発のベスト・プラクティス」を参照)について理解する必要があります。


関連項目:


図11-2図11-3に、ページ・テンプレートのレイアウトで使用されている一般的なADFコンポーネント、およびページ・テンプレートのコードと生成されたレイアウトを示します。

  • af:panelGridLayout—行(gridRow)およびセル(gridCell)を使用して構造化レイアウトを定義する、汎用性のあるレイアウト・コンポーネント。このコンポーネントは、小規模なクライアント側フットプリントを提供すると同時にレイアウト機能において非常に柔軟性があるため、優先される一般的なレイアウト・コンポーネントです。また、このコンポーネントを使用すると、行および列の形式で必要なレイアウトに一致するように、ページ領域を無理なく定義できます。panelGridLayoutを指定すると、固定または可変の列幅(%またはピクセル)を簡単に指定できますが、他のレイアウト・コンポーネントを使用した場合ほど簡単には実行できません。図11-2を参照してください。

  • af:panelGroupLayout—水平、垂直、またはスクロール可能な構造に配置されたコンポーネントのフロー・シリーズ。通常、panelGroupLayoutは、フロー・レイアウト、およびストレッチ・レイアウト内部のフロー・コンテンツとともに使用されます。また、コンテンツが使用可能なスペースに適合していない場合は、垂直および水平方向のスクロール・バーを表示します。図11-2および図11-3を参照してください。

  • af:panelSplitter—ユーザーによる変更が可能な2つのセクションに分割されたストレッチ・ボックス。図11-3を参照してください。

図11-2 ページ・テンプレートのコードと生成されたストレッチ・レイアウト: 例1

図11-2の説明が続きます
「図11-2 ページ・テンプレートのコードと生成されたストレッチ・レイアウト: 例1」の説明

図11-3 ページ・テンプレートのコードと生成されたストレッチ・レイアウト: 例2

図11-3の説明が続きます
「図11-3 ページ・テンプレートのコードと生成されたストレッチ・レイアウト: 例2」の説明

11.1.4 WebCenter Portal Frameworkアプリケーションの組込みページ・テンプレートの理解


注意:

タスク・フロー数が削減され、パフォーマンスが高速化された最新の11.1.1.8.3ページ・テンプレートの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のWebCenter Portalの組込みページ・テンプレートについての項を参照してください。第11.4項「ページ・テンプレートの編集」の説明に従って、JDeveloperでこれらのページ・テンプレートをダウンロードして変更できます。


Portal Frameworkアプリケーションを作成して、図11-4に示されているように、「標準ポータル機能のアプリケーションの構成」チェック・ボックスを選択すると(第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」を参照)、アプリケーションにpageTemplate_globe.jspxおよびpageTemplate_swooshy.jspxという2つの組込みテンプレートが追加されます。

図11-4 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ4/5

図11-4の説明が続きます
「図11-4 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ4/5」の説明

これらの組込みページ・テンプレートは、両方とも基本的には同じ機能を提供しますが、使用するグラフィックスが異なります。図11-5に、pageTemplate_globe.jspxページ・テンプレートを示します。

図11-5 組込みページ・テンプレート - pageTemplate_globe.jspx

図11-5の説明が続きます
「図11-5 組込みページ・テンプレート - pageTemplate_globe.jspx」の説明

  1. ポータルのホーム・ページへのリンク

  2. タグ・ライン

  3. ようこそメッセージ

  4. 実行時管理コンソールへのリンク

  5. ユーザーのログイン時にログアウト・リンクに変換されるログイン領域

  6. ナビゲーション・バー

  7. テンプレートに基づいてページにコンテンツを追加するための領域

  8. 著作権情報

これらのページ・テンプレートは、次の属性を使用します。

表11-1 組込みページ・テンプレートの属性

名前 タイプ デフォルト値

contentWidth

String

960px

showNavigation

Boolean

true

showGreetings

Boolean

#{securityContext.authenticated}

showLogin

Boolean

true

showAdmin

Boolean

#{securityContext.authenticated}

isAdminPage

Boolean

false

isEditingTemplate

Boolean

false


特定の要件を満たすようにこれらの組込みページ・テンプレートを編集することも、独自のページ・テンプレートを最初から作成することもできます。独自のページ・テンプレートを作成する場合は、タスク・フロー数が削減され、パフォーマンスが高速化された、推奨されるレイアウト・コンポーネントの例を含む最新の11.1.1.8.3ページ・テンプレートを参照することをお薦めします。『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のWebCenter Portalの組込みページ・テンプレートについての項を参照してください。

11.2 ページ・テンプレートの開発のベスト・プラクティス

ページ・テンプレートはポータルのすべてのページに存在するため、ページ・テンプレートを設計する際は、そのパフォーマンスを最適化してベスト・プラクティスに適合するように注意深く計画を立てる必要があります。この項では、ポータルのページ・テンプレートを開発する際のヒントについて説明します。


WebCenter Portal (ポータル・ビルダー)のページ・テンプレートに関する注意:

ページ・テンプレートの開発は複雑なタスクです。JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。

詳細は、第11.3項「ページ・テンプレートの作成」第11.4「ページ・テンプレートの編集」および第55.1項「WebCenter Portalのアセットの開発」を参照してください。


表11-2に、ページ・テンプレートから最良の結果を実現するための考慮事項およびガイダンスのクイック・リファレンス・サマリーを示します。

表11-2 ページ・テンプレートのベスト・プラクティスのサマリー

考慮事項 ベスト・プラクティス

パフォーマンス

ページ・テンプレートの開発のベスト・プラクティスに関する項の内容はすべてページ・テンプレートのパフォーマンスを向上させることを目的としており、ベスト・プラクティス全体にわたって留意する必要があるいくつかの一般的なヒントがあります。

  • 埋込みタスク・フローの使用は最小限に留めます。たとえば、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のWebCenter Portalの組込みページ・テンプレートについての項で説明しているように、WebCenter Portalに組み込まれている最新のすぐに使用できるページ・テンプレートを参照してください。

  • ADFレイアウト・コンポーネントの使用は最小限に留めます。ADFレイアウト・コンポーネントの数が少なければ、スキンの適用が簡単になります。panelGridLayoutを行(gridRow)およびセル(gridCell)とともに使用して、ページ・テンプレート構造全体を実装します。

  • 装飾を目的とするイメージは使用しないでください(角が丸められた四角形など)。イメージではなく、CSSの使用を検討してください。

  • 可能な場合は、メニューやダイアログなどのADFコンポーネントのロードは先に延ばします。この処理は、contentDeliverychildCreationなどのADFを使用して制御できます。

  • ページ・テンプレートのレンダリングの際に余分な時間を要する要素は使用せず、かわりに処理時間が短くて済む要素を使用するようにしてください。

レイアウト

ページ・テンプレートの設計で最も重要な側面の1つは、テンプレートとページ・コンテンツの両方の要素でコンポーネントをどのようにレイアウトするかという点です。ページ・テンプレートでは、フロー・レイアウトまたはストレッチ・レイアウトが使用できます。これら2つの戦略の詳細は、第11.1.2項「ページ・テンプレートのレイアウトの理解」を参照してください。

ページ・テンプレート開発者は、コンテンツ・ファセットをページのストレッチ領域またはフロー領域のいずれに配置するかを制御できます。したがって、ページ・コンテンツは、レイアウト戦略を考慮に入れて作成する必要があります。

ページ・テンプレートに関する最適な戦略を決定したら、選択したレイアウトを作成する際のヒントについて次の各項を参照してください。

ナビゲーション

ページ・テンプレートは、ポータルのナビゲーションをいくつかの方法で公開できます。たとえば、デスクトップ・ブラウザの場合、通常、ポータル・ナビゲーションは、ページの上部(横並び)またはページの横側(縦並び)に表示されます。

  • トップ・ナビゲーション・ページ・テンプレートは、ヘッダー領域にポータル・ナビゲーションを公開します。トップ・ナビゲーションの場合、ページの水平方向の領域を有効に使用できるため、ポータル・ナビゲーションのトップ・レベル・ページが7レベル以下の場合は、この方式をお薦めします。このページ・テンプレートの設計には、通常、ヘッダー、ページおよびフッターのセクションが含まれ、フロー・レイアウトが必要なサイトの開始点に適しています。

  • サイド・ナビゲーション・ページ・テンプレートは、ページの左側のサイドバーにポータル・ナビゲーションを公開します。サイド・ナビゲーションは垂直方向に表示され、ナビゲーション・アイテムのリストが長くても対応できるため、ポータル・ナビゲーションのトップ・レベル・ページが7レベルを超える場合は、この方式をお薦めします。ナビゲーション・モデルが複雑な場合は、サイド・ナビゲーション・テンプレートを選択します。

デバイスごとに、異なるナビゲーション・モデルを使用できます。たとえば、モバイル・デバイスに対して最適化されたページ・テンプレートの場合、ナビゲーションは、ポップアップまたはスライド・イン/アウトとして表示できます。

WebCenter Portal (Portal Default Navigation Model)ですぐに使用できるナビゲーション・モデルは共有アセットであり、ページ・テンプレートに埋め込むことにより、必要に応じてカスタマイズおよび拡張が可能な構築済のナビゲーションを表示できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のナビゲーション・モデルの編集に関する項およびWebCenter Portalの組込みページ・テンプレートについての項(埋込みナビゲーション・タスク・フローの例)を参照してください。

スキン

:

各ページ・テンプレートは、スキンとともに機能して、ポータル内のページのルック・アンド・フィール全体を決定します。ページ・テンプレートはページ上のコンポーネントの構造を制御し、スキンは色、フォントなどのコンポーネントの視覚的な外観、およびページ上のコンポーネントの位置、高さ、幅などのその他の要素を制御します。

各ページ・テンプレートで優先スキンを定義すると、それぞれのページ・テンプレートで最適に機能するスキンを指定できます。そのページ・テンプレートをポータルのデフォルト・ページ・テンプレートとして選択したり、システムのデフォルトとして選択すると、デフォルトのスキンは自動的にそのページ・テンプレートの優先スキンに更新されます。

詳細は、第13章「スキンの開発」を参照してください。

保管場所

Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規ページ・テンプレートを公開するには、ページ・テンプレートをApplication_Root/Portal/public_html/oracle/webcenter/portalapp/pagetemplatesディレクトリ(すぐに使用できるテンプレートの保管場所)に作成する必要があります。このディレクトリにページ・テンプレートを作成すると、次の利点があります。

  • ページ・テンプレートをリソース・アーカイブにパッケージ化し、他のWebCenter Portal Frameworkアプリケーションまたはポータル・ビルダーで構築されるポータルにインポートして使用できます。再利用可能な汎用ページ・テンプレートを作成できます。

  • ページ・テンプレートを実行時に管理コンソールで管理できます。

ページ・テンプレートをインポートしたら、pagetemplate-metadata.xmlを編集して、新しくインポートされたテンプレートをJDeveloper用に登録する必要があります。

詳細は、第9.5.1項「ポータル・リソースの実行時管理の有効化」を参照してください。

実行時の動作

実行時に認可ユーザーがコンポーザで編集できるページ・テンプレートをJDeveloperで開発する場合は、第11.2.3項「実行時に編集できるページ・テンプレートの開発のベスト・プラクティス」で説明されているヒントに従ってください。

ページ・テンプレートの開発時に「関連ADFmページ定義の作成」オプションを選択すると、テンプレートにポートレットとタスク・フローを含めて、実行時の切替えを有効にできます。詳細は、第11.3項「ページ・テンプレートの作成」および第11.5.3項「実行時にPortal Frameworkアプリケーションでページ・テンプレートの動的切替えを有効にする方法」を参照してください。

コンポーネント

ADFレイアウト・コンポーネントごとの外観の詳細は、ADF Facesリッチ・クライアントのデモ・オンライン・ツール(http://jdevadf.oracle.com/adf-richclient-demo/faces/visualDesigns/index.jspx)を参照してください。コンポーネントの「ソースの表示」メニューから「ページ」または「ページ・テンプレート」を選択し、使用されているタグと属性およびコンポーネント構造のページの外観を確認します。

ページに使用されているページ・テンプレートは変更される可能性があるため、カスタム・コンポーネントの設計では、フローおよびストレッチのコンテキストで適切に表示されるようにします。

コンポーネントの外観のカスタマイズに関するヒントは、第11.2.4項「コンポーネントの外観のカスタマイズのベスト・プラクティス」を参照してください。

スクロール

スクロールバーは、フロー・アイランド・コンテンツの周囲にのみ追加できます。スクロールバーの実装に関するヒントは、第11.2.5項「ページ・テンプレートでのスクロールの定義のベスト・プラクティス」を参照してください。

余白、境界線およびパディング

ブラウザのCSSボックス・モデル・ルールのため、コンポーネント上の余白、境界線、パディングの定義が複雑になる場合があります。これらの複雑さの解決に関するヒントは、第11.2.6項「余白、境界線、パディングの定義のベスト・プラクティス」を参照してください。

属性

ページ・テンプレートまたはページ・テンプレートを使用するページで設定できる属性について検討してください。たとえば、showFooterは、ページ・フッターを表示するかどうかを指定します。

属性を持たないページ・テンプレートは構文的に正しいものです。ただし、テンプレートのレンダリングが多少異なる複数のページに対して1つのページ・テンプレートを使用する場合は、ページ・テンプレートの属性が役に立ちます。

ページ・テンプレートでの属性の使用に関する詳細は、第11.2.7項「Portal Frameworkアプリケーションでのページ・テンプレート・コンテンツの非表示のベスト・プラクティス」および第11.3項「ページ・テンプレートの作成」を含む、この章全体で説明しています。

リンク

ページ・テンプレートにリンクを追加するには、すぐに使用できるページ・テンプレートで提供されているコンポーネントをコピーして、リンク・ナビゲーション、メニュー、ブレッドクラム、ボタンおよびイメージを組み込みます。

goButtongoLinkなどのgoコンポーネントは、クライアント側の機能を実行しないため、クライアント側のフットプリントはほとんど用意されていません。また、これらのコンポーネントは、検索エンジン用に最適化されたURLを使用できるため、ポータル内の一般的なナビゲーションではcommandコンポーネント(commandButtoncommandLink)よりも優先されます。

国際化

国際化手法を考慮したページ・テンプレートを作成する場合、リソース・バンドル・ファイルへの静的テキストの格納などの推奨されるプラクティスに関する詳細は、第75章「複数言語に対応したポータルの構築」を参照してください。

ページ・テンプレートの命名(表示名)

表示名は、新規ページの作成の際にユーザーに公開されます。このため、テンプレートの使用対象のページ・タイプをユーザーが簡単に識別できるようなページ・テンプレート名にする必要があります。



関連項目:

ページ・テンプレートの一般的なベスト・プラクティスの詳細は、Oracle Technology Network (OTN)で入手可能なタイトル『Reference: Layout Best Practices』(http://www.oracle.com/technetwork/developer-tools/adf/layoutbestpractices-083827.html)のホワイト・ペーパーを参照してください。


この項の内容は、次のとおりです。

:

11.2.1 ストレッチ・レイアウトの作成のベスト・プラクティス

ページ・テンプレートに最適なレイアウトがストレッチ・レイアウトである場合(第11.1.2項「ページ・テンプレートのレイアウトの理解」)、レイアウトの開発時には次のヒントに従ってください。

  • 作成する外部構造に格納されたコンテナは、ストレッチでき、その子をストレッチできます。documentコンポーネントの内部で、たとえばコンテナpanelGridLayout (図11-2)を行(gridRow)およびセル(gridCell)とともに使用するか、コンテナpanelSplitter (図11-3)を使用します。


    注意:

    各レイアウトまたはパネル・コンポーネントのタグ・ドキュメントでは、ストレッチできるかどうか、およびそのコンポーネントの「形状管理」ドキュメントでストレッチを実現する方法が識別されます。一部のコンポーネントには、子をストレッチさせるかどうかを決定する属性が含まれています。例: documentにはmaximized属性が、showDetailItemにはstretchChildren属性が含まれます。


  • フロー・アイランドを作成します。ストレッチ可能な外部構造の内部に、フロー(ストレッチでない)コンポーネントのアイランドを作成します。これをストレッチからフローへ遷移させるには、この遷移ではストレッチ対象となっていてもその子をストレッチさせないため、panelGroupLayoutlayout="scroll"またはlayout="vertical"と一緒に使用します。

  • ストレッチ・コンポーネントでは、dimensionsFrom="auto"と設定することにより、ストレッチ・コンポーネント(panelStretchLayoutなど)自身がストレッチされる場合は、その子のみをストレッチしようと試みます。ストレッチされない場合は、その子をフロー(ストレッチではなく)します。

  • フロー・コンテナ内部では、何かを垂直方向にストレッチ(高さにパーセント値を使用して)させないでください。

  • inlineStyleposition CSSプロパティは使用しないでください。使用すると、このプロパティをスキンで指定したスタイルでオーバーライドする機能が動作しなくなります。


注意:

次のコンポーネントは、信頼できる状態でストレッチできないコンポーネントのごく一部です。

  • 大半の入力コンポーネント

  • panelBorderLayout

  • panelFormLayout

  • panelGroupLayout (layout="default"とともに)

  • panelGroupLayout (layout="horizontal"とともに)

  • panelHeader (type="flow"とともに)

  • panelLabelAndMessage

  • panelList

  • panelGrid

  • tableLayout (Apache MyFaces Trinidad HTMLコンポーネント)


11.2.2 フロー・レイアウトの作成のベスト・プラクティス

ページ・テンプレートに最適なレイアウトがフロー・レイアウトである場合(第11.1.2項「ページ・テンプレートのレイアウトの理解」)、レイアウトの開発時には次のヒントに従ってください。

  • panelGridLayoutを行(gridRow)およびセル(gridCell)とともに使用して、フローする構造化レイアウトを定義します。

  • スクロール・バーが複数になることを避けるため、layout="vertical"を使用するかわりに、スクロールのpanelGroupLayoutコンポーネントをネストしないでください。

  • 大半のストレッチ可能なADFコンポーネントは、dimensionsFrom="auto"でのフロー・コンテキストでも機能します。

  • コンポーネントを水平にストレッチさせるには、styleClass="AFStretchWidth"を(inlineStyle="width:100.0%"のかわりに)使用します。

カスタマイズ可能なコンポーネントの使用:

  • panelCustomizableで、layout="auto"を使用してその子をストレッチするかどうかを調べます。

  • フロー・レイアウトまたはストレッチ・レイアウトをサポートするには、showDetailFramestretchChildren="auto"と指定して使用します。

11.2.3 実行時に編集できるページ・テンプレートの開発のベスト・プラクティス

実行時にコンポーザで編集できるようなページ・テンプレートを設計時にJDeveloperで作成するには、次のヒントに従ってください。

  • コンポーザ・グループのコンポーネントをコンポーネント・パレットに追加します。

  • ページ・テンプレートにpageCustomizableは追加しないでください。

  • 他のコンポーネントを保持している水平または垂直方向のレイアウトをコンテナに提供する、最低1つのpanelCustomizableコンポーネントを追加します。

  • panelCustomizableコンポーネントの内部で、コンポーネントに対して表示、非表示、移動などのアクションを追加できるクロムを提供するshowDetailFrame内のADFコンポーネント(outputTextrichTextEditorgoLinkなど)を追加します。フレームまたは埋込みコンポーネント・プロパティを編集できます。


    注意:

    showDetailFrameコンポーネントは処理時間に影響を与えるため、この手法は慎重に使用してください。エンド・ユーザーがコンポーネントを移動させることができない場合は、コンポーネントをshowDetailFrameにラップしないでください。


設計時にページに追加するために使用できるコンポーネントの大部分は、実行時にリソース・カタログでも使用できます。表11-3では、設計時コンポーネントを実行時コンポーネントにマップしています。

表11-3 設計時から実行時へのコンポーネント・マッピング

設計時(JDeveloper) 実行時(コンポーザ)

panelCustomizable

Box

outputText

HTML Markup

goLink

Hyperlink

goImageLink

Image

showDetailFrame

Movable Box

richTextEditor

Text

inlineFrame

Web Page


11.2.4 コンポーネントの外観のカスタマイズのベスト・プラクティス

コンポーネントの外観をカスタマイズするには、次のヒントに従ってください。

  • カスタム・スタイルには、メンテナンスが簡単で、ページ・テンプレートのソースを変更しなくても変更可能なCascading Style Sheets (CSS)を使用します。たとえば、CSSコードbackground-color: blueを使用して、ページの背景色を青色に変更します。

  • 既存のスキンに必要なすべてが備わっていない場合には、一貫した外観の変更に対してカスタム・スキンを使用します。

  • インスタンス固有の代替スタイルには、styleClass属性を使用します。対応するスタイル定義は、カスタム・スキン(推奨)、af:resourceタグにより提供されるスタイルなどの管理しやすい場所に保存します。

  • 最後の手段として、inlineStylecontentStylelabelStyleなどのコンポーネントの属性を使用します。これらの属性は、単一のスタイル・シートに収集されているのではなくコンポーネント全体にわたって散在しているため、より多くのページのRaw HTMLサイズを使用し、前述のメカニズムを1つ以上使用している場合には不要なこともあります。スタイルはWebブラウザで直接処理されるため、非常に強力ですが、エラーが発生しやすいという代償を伴います。

  • ブラウザではすべての要素のすべてのスタイルがサポートされていませんし、スタイルの特定の組合せでは明確でない結果となります。次のスタイル構成は回避してください。

    • %単位のheight値を持つinlineStyle

    • 90%から100%width値を持つinlineStyle (かわりにstyleClass="AFStretchWidth"またはstyleClass="AFAuxiliaryStretchWidth"を使用してください)

    • heighttopおよびbottom値を持つinlineStyle

    • widthleftおよびright値を持つinlineStyle

    • position値を持つinlineStyle

    • 親コンポーネントによりストレッチされた子の場合、width値またはheight値を持つinlineStyle

11.2.5 ページ・テンプレートでのスクロールの定義のベスト・プラクティス

ページ・テンプレートでスクロールを定義するには、次のヒントに従ってください。

  • ページ・コンテンツが使用可能な画面サイズ全体を占めるように設計を行うことにより、エンド・ユーザーが水平方向にスクロールしないで済むようにしてください。

  • スクロールバーは、フロー・アイランド・コンテンツの周囲にのみ追加できます。ストレッチ外部フレームからフロー・アイランドへの切替え用遷移コンポーネントには、panelGroupLayoutlayout="scroll"を含めることをお薦めします。このpanelGroupLayoutのコンテンツが割り当てられたスペースの大きさに合わない場合、ブラウザではスクロールバーが必要かどうかが判断され、自動的に追加されます。

  • スクロールpanelGroupLayoutコンポーネントをネストすると、ユーザーには複数のスクロールバーが表示されるため、ネストしないでください。また、これはストレッチ領域からフロー領域への遷移でのみ使用され、フロー領域内部にストレッチ領域がないため、通常、ネストされたスクロールバーを使用して終了できません。最もよいのは、ユーザーが検索している項目を表示するためにスクロールする必要がある領域の数を、最小限にすることです。ユーザーが必要とするスクロールについて十分検討してください。不要なスクロールバーが存在する場合、そのpanelGroupLayoutlayout属性をverticalに変更する必要がある場合があります。

11.2.6 余白、境界線、パディングの定義のベスト・プラクティス

ブラウザのCSSボックス・モデル・ルールのため、コンポーネント上の余白、境界線、パディングの定義が複雑になる場合があります。多くの場合、このようなスタイルを適用するには、複数のコンポーネントを一緒に使用する必要があります。

  • スクロール領域では、追加のpanelGroupLayoutlayout="vertical"でパディングを定義し、外側のpanelGroupLayoutlayout="scroll"を指定して、その内部に追加する必要があります。

  • ストレッチ領域では、panelGroupLayoutコンポーネントをpanelGridLayoutの内部にラップし、gridCellコンポーネントの内部にスペーサを指定することが必要になる場合があります。図11-2を参照してください。


関連項目:

様々なメカニズムをパディングに適用するには、ナビゲーション-マスター-ディテール、タイル・フロー、タイル・ストレッチのレイアウト・パターン例を参照してください。

http://jdevadf.oracle.com/adf-richclient-demo/faces/feature/layoutBasicTest.jspx


11.2.7 Portal Frameworkアプリケーションでのページ・テンプレート・コンテンツの非表示のベスト・プラクティス

Portal Frameworkアプリケーションでは、ページ・テンプレートのパーツを非表示にするページ・テンプレートに基づいた特殊なページがいくつか存在します。これらのページでは、ページ・テンプレートで指定した属性を使用して、この処理を実現します。

  • すぐに使用できるlogin.jspxおよびerror.jspxの場合: showNavigation=falseおよびshowLogin=false.

  • 組込み管理ページの場合: isAdminPage=true.

  • テンプレートを編集する場合は、アセット・マネージャがisEditingTemplate=trueと設定します。

テンプレートがデフォルト・テンプレートとして使用される場合、またはユーザーがすぐに使用できるログイン・ページを使用する場合は、カスタム・ページ・テンプレートでこれらの属性を使用します。

コンポーザを使用して、編集可能なコンポーネントによりページ・テンプレートを編集できる場合があります。ページを編集する際は、ページ・テンプレートではなくページ・コンテンツのみを編集できるように、コンテンツ・ファセット参照以外のテンプレート・コンテンツを非表示にすることをお薦めします。たとえば、rendered属性を使用します。

rendered = "#{!composerContext.inEditMode or attrs.isEditingTemplate}"

11.3 ページ・テンプレートの作成

ページ・テンプレートを作成する前に、第11.2項「ページ・テンプレートの開発のベスト・プラクティス」に目を通しておいてください。

この項では、独自設計の新規ページ・テンプレートを最初から作成する方法について説明します。または、Portal Frameworkアプリケーションで提供されている2つの組込みページ・テンプレートか、WebCenter Portalで提供されている最新のテンプレート(推奨)から開始し、要件に合わせて変更できます。開始点として既存のページ・テンプレートを使用するには、第11.4項「ページ・テンプレートの編集」を参照してください。


注意:

ページ・テンプレートの作成は、複雑なタスクです。JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。


ページ・テンプレートを作成するには:

  1. アプリケーション・ナビゲータで、ページ・テンプレートを作成および格納するノードを右クリックし(図11-6)、「新規」を選択します。

    図11-6 pagetemplatesフォルダの内容

    図11-6の説明が続きます
    「図11-6 pagetemplatesフォルダの内容」の説明

    • Portal Frameworkアプリケーションの場合、推奨されるディレクトリは/oracle/webcenter/portalapp/pagetemplatesです。


      注意:

      Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規ページ・テンプレートを公開するには、ページ・テンプレートをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに作成する必要があります。デフォルトでは、Portal Frameworkアプリケーションには別個のpagetemplatesディレクトリが含まれており、このディレクトリには組込みページ・テンプレートが格納されています。


    • ページ・テンプレートをWebCenter Portal (ポータル・ビルダー)で使用する場合は、第55.1項「WebCenter Portalのアセットの開発」の説明に従い、WebCenterSpacesResourceプロジェクトを使用して、共有アセットまたはポータル・アセット用のディレクトリを選択します。

  2. 「新規ギャラリ」で、「Web層」を開き、「JSF」を選択して、「JSFページ・テンプレート」を選択し、「OK」をクリックします。

  3. 「JSFページ・テンプレートの作成」ダイアログ(図11-7)で、「ファイル名」フィールドに、ページ・テンプレートを表すJSPXファイルの名前(myCompanyPageTemplate.jspxなど)を入力します。

    このファイル名によって、アプリケーション・ナビゲータでページ・テンプレートが識別されます。

    図11-7 「JSFページ・テンプレートの作成」ダイアログ

    図11-7の説明が続きます
    「図11-7 「JSFページ・テンプレートの作成」ダイアログ」の説明

  4. 「ディレクトリ」フィールドで、ページ・テンプレートを作成する場所のフル・ディレクトリ・パスを確認するかまたは入力します。

  5. 「ページ・テンプレート名」フィールドに、このテンプレートの使用対象のページ・タイプをユーザーが簡単に識別できるような、ページ・テンプレートの表示名を入力します。

  6. ページ・テンプレートにいずれかの事前定義済レイアウトを使用する場合は、「クイック・スタート・レイアウトの使用」を選択します。

  7. ページ・テンプレートにADFm Modelデータ・バインディングを使用する場合は、「関連ADFmページ定義の作成」を選択します。

    ページ定義をページ・テンプレートに関連付けると、モデル要素が含まれるオブジェクト(タスク・フローやポートレットなど)をページ・テンプレートに組み込むことができるようになります。また、ユーザーは、実行時に別のページ・テンプレートに切り替えることができるようになります。実行時ページ・テンプレートの切替えが機能するように、次のいずれかの条件を満たす必要があります。

    • アプリケーション内のすべてのページ・テンプレートに関連ページ定義があります。

    • アプリケーション内のいずれのページ・テンプレートにも関連ページ定義がません。

    したがって、Portal Frameworkアプリケーションで提供される組込みページ・テンプレートには関連ページ定義があるため、Portal Frameworkアプリケーションでページ・テンプレートの切替えが機能するように、アプリケーション内で作成する他のページ・テンプレートにも関連ページ定義を指定する必要があります。

  8. 「ファセット定義」タブをクリックして、コンテンツを挿入できるページ・テンプレートで領域(ファセット)を定義します。

    ファセットは、テンプレート内のプレースホルダであり、テンプレートを使用してページにより入力されます。ADFページ・テンプレートでは、任意の数のファセットを指定できますが、Portal Frameworkアプリケーションでは、テンプレートごとにcontentと呼ばれる1つのファセットを指定する必要があります。通常、WebCenter Portalの実行時ツールが認識できるのはこのファセットのみであるため、Portal Frameworkアプリケーションでは他のファセットは使用されません。他のファセットは、設計時にJDeveloperでのみ使用できます。

    WebCenter Portalアプリケーションでの使用が意図されたページ・テンプレートには、ファセット定義を少なくとも1つは含める必要があり、その名前はcontentにする必要があります。このファセット定義を作成するには:

    1. 「新規」アイコンをクリックして、「ファセット定義」タブに新規行を追加します。

    2. 新規ファセット定義の「名前」フィールドに、contentと入力します。

    3. 「説明」フィールドに、たとえばMain content areaなど、ファセット定義の簡単な説明を入力します。

    4. 必要に応じて、追加のファセット定義を作成します。

    5. ページ・テンプレート内の必要な場所にファセットを追加する方法の詳細は、第11.4項「ページ・テンプレートの編集」を参照してください。

    例11-1は、pageTemplate_globe.jspx組込みページ・テンプレートの<af:xmlContent>セクション内にある、contentファセット定義を示しています。

    例11-1 Globe組込みページ・テンプレートのcontentファセット

    <af:xmlContent>
      <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
        <display-name>Globe Page Template</display-name>
        <facet>
          <description>Facet for content</description>
          <facet-name>content</facet-name>
        <facet>
        ...
      </component>
    </af:xmlContent>
    
  9. 「属性」タブをクリックして、「新規」アイコンをクリックし、テンプレートを使用するページからテンプレート自体に値を渡すための属性を定義します。これらの値をページ・テンプレートで使用することにより、テンプレートを使用する個々のページに実際に表示されるものを制御できるようになります。

    属性を持たないページ・テンプレートは構文的に正しいものです。ただし、テンプレートのレンダリングが多少異なる複数のページに対して1つのページ・テンプレートを使用する場合は、ページ・テンプレートの属性が役に立ちます。

    たとえば、pageTemplate_globe.jspx組込みページ・テンプレートには、シード済「管理」ページへのリンクが含まれています。現行ページが「管理」ページである場合、リンクの表示は必要ありません。テンプレートでは、isAdminPageという属性を使用して、現行ページがシード済「管理」ページかどうかが識別されます。この属性の値は、テンプレートを使用するページによって設定され、「管理」ページへのリンクを表示するかどうかを判別します。

    例11-2に、ページ・テンプレートのisAdminPage属性定義を示します。

    例11-2 Globe組込みページ・テンプレートの属性定義

    <af:xmlContent>
      ...
        <attribute>
          <attribute-name>isAdminPage</attribute-name>
          <attribute-class>java.lang.Boolean</attribute-class>
          ...
          <default-value>#{false}</default-value>
        </attribute>
    </af:xmlContent>
    

    例11-3は、シード済「管理」ページにリンクをレンダリングするかどうかを指定するisAdminPage属性の値を使用するページ・テンプレートを示しています。

    例11-3 「管理」ページのリンクのレンダリングに使用する条件値

    <af:pageTemplateDef var="attrs">
      ...
      <af:goLink id="pt_glnk1" text="Administration"
                 destination="/admin"
                 rendered="#{attrs.showAdmin !=attrs.isAdminPage}"
                 inlineStyle="font-size:small; color:White;"/>
    

    例11-4は、シード済「管理」ページでisAdminPage属性をtrueに設定して、ユーザーが「管理」ページを表示する際にページ・テンプレートでリンクがレンダリングされないようにする方法を示しています。

    例11-4 ページ・テンプレートの属性の値の設定

    <af:pageTemplate ... isAdminPage="true">
    

    例11-5は、ページ・テンプレートがcontentWidth属性の値を使用して、ページ幅を設定する方法を示しています。デフォルト値は960ピクセルです

    例11-5 contentWidth属性

    <attribute>
      <attribute-name>contentWidth</attribute-name>
      <attribute-class>java.lang.String</attribute-class>
      <default-value>960px</default-value>
    </attribute>
    
  10. 「OK」をクリックします。

    ページ・テンプレートが作成され、ビジュアル・エディタで開かれます。次の手順では、ページ・テンプレートを編集して、レイアウトとコンテンツを定義します。

11.4 ページ・テンプレートの編集

ページ・テンプレートは、最初の作成の後に編集できます。組込みページ・テンプレートのいずれかを編集して、個別の要件に適合するように変更することもできます。加えるすべての変更が、そのページ・テンプレートを使用するすべてのページに自動的に公開されます。


注意:

ページ・テンプレートの編集は、複雑なタスクです。JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。


ページ・テンプレートを編集する前に、第11.2項「ページ・テンプレートの開発のベスト・プラクティス」に目を通しておいてください。

独自のページ・テンプレートに組み込むことができる機能の例は、次を参照してください。

組込みページ・テンプレートに基づいてページ・テンプレートを作成するのではない場合でも、組込みページ・テンプレートはアイデアをつかむ上で検討に値します。たとえば、組込みページ・テンプレートには、ログイン・フォーム、およびナビゲーションの視覚化に関して役に立つ例が含まれており、このテンプレートは要件に合わせて変更できます。

反復開発が有効な場合、ページ・テンプレートに加えた変更はすべて、実行中のPortal Frameworkアプリケーションで即座に確認できます。反復開発の詳細は、第2.3.1項「Portal Frameworkアプリケーションでの反復開発の準備」を参照してください。

ページ・テンプレートを編集するには:

  1. ページ・テンプレートにWebCenter Portal固有のコンポーネントを追加するには、最初にJDeveloperでプロジェクトにJSPライブラリを追加する必要があります。例:

    JDev_HOME/jdeveloper/webcenter/modules/oracle.webcenter.framework_11.1.1/spaces-components.jar
    

    プロジェクトにライブラリを追加したら、SpacesDeclarativeComponentsという名前の新規コンポーネント・パレットが表示されます。パレットからページ・テンプレートにコンポーネントを移動できます。同一の組込みコンポーネントは、実行時に「テンプレート開発」にあるリソース・カタログを通して使用できます。

  2. アプリケーション・ナビゲータで、編集するページ・テンプレートを右クリックし、「開く」を選択します。

    • Portal Frameworkアプリケーションの場合、ページ・テンプレートの推奨されるディレクトリは/oracle/webcenter/portalapp/pagetemplatesです。


      注意:

      Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規ページ・テンプレートを公開するには、ページ・テンプレートをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに格納する必要があります。デフォルトでは、Portal Frameworkアプリケーションには別個のpagetemplatesディレクトリが含まれています。


    • ページ・テンプレートをWebCenter Portal (ポータル・ビルダー)で使用する場合は、第55.1項「WebCenter Portalのアセットの開発」の説明に従い、WebCenterSpacesResourceプロジェクトを使用して、共有アセットまたはポータル・アセット用のページ・テンプレートを見つけます。

  3. ビジュアル・エディタで、ページ・テンプレートのレイアウトやコンテンツに必要な変更を加えます。

    1. コンポーネント・パレットからコンポーネントをドラッグして、ビジュアル・エディタ内のページ・テンプレートにドロップします。

      ナビゲーションの視覚化は、ページ・テンプレートの重要な側面です。ナビゲーションの視覚化をページ・テンプレートに追加する処理の詳細は、第10.12項「ポータル・ナビゲーションの視覚化」を参照してください。

      ポートレット、タスク・フロー、コンテンツなど、その他のリソースをページ・テンプレートに追加する方法の詳細は、第15章「ページの作成とリソースの追加」を参照してください。

      ページ・テンプレートで提供できるその他の機能として、ログイン/ログアウトや検索のフィールドがあります。組込みページ・テンプレートには、ログイン・フォームの例が含まれています。

      ページ・テンプレート全体で、式言語(EL)式を使用して、定数値のかわりに変数値を指定できます。一般的なEL式については、付録F「式言語式」を参照してください。

    2. ユーザーがページ・テンプレートに基づいたページに独自のコンテンツを配置できるページ・テンプレート内の領域について、次の操作を行います。

      1. コンポーネント・パレットから「FacetRef」コンポーネントをドラッグし、ページ・テンプレート内の該当する場所にそれをドロップします。

      2. ファセット参照の挿入ダイアログで、ファセット名ドロップダウン・リストから、ページ・テンプレートのこの領域に使用するファセットを選択します。新しいファセット名を入力する場合、JDeveloperでは、ページ・テンプレート定義ファイルに新しいファセット定義を作成します。

      例11-6は、pageTemplate_globe.jspx組込みページ・テンプレートにcontentファセットが組み込まれる方法を示しています。

      例11-6 Globe組込みページ・テンプレートのcontentファセット

      <af:pageTemplateDef var="attrs">
        <af:panelGroupLayout id="pt_root" layout="scroll">
          <af:panelGroupLayout id="pt_pg12" layout="vertical">
            ...
            <af:facetRef facetName="content"/>
            ...
          </af:panelGroupLayout>
        </af:panelGroupLayout>
        ...
      <af:pageTemplateDef>
      
    3. 新規ファセット定義または属性を追加するには、「構造」ウィンドウでaf:pageTemplateDefタグを選択して、プロパティ・インスペクタを使用します。たとえば、第11.3項「ページ・テンプレートの作成」の手順を参照してください。

    4. JSFページ・テンプレートの一般情報は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のページ・テンプレートの使用に関する項を参照してください。

  4. ページ・テンプレート定義ファイルを保存します。

11.5 ページへのページ・テンプレートの適用

この項では、ページ・テンプレートをPortal Frameworkアプリケーションのページに適用する方法について説明します。


注意:

ページ・テンプレートをJDeveloperで開発してWebCenter Portal (ポータル・ビルダー)で使用する場合、このタスクはポータル・ビルダーを使用して実行されますが、ページ・テンプレートはアプリケーション・レベルまたはポータル・レベルのいずれかで選択され、ポータル内のすべてのページの構造とレイアウト(ヘッダー、本文、ナビゲーションおよびフッター)を定義します。ポータル・ビルダーについては、ポータル間でグローバルなデフォルト設定を構成するには『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のデフォルト・ページ・テンプレートの選択に関する項、およびポータルのデフォルト・ページ・テンプレートを選択するには『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のポータルのページ・テンプレートの変更に関する項を参照してください。


この項の内容は、次のとおりです。

11.5.1 Portal Frameworkアプリケーションでのページ作成時にページ・テンプレートを適用する方法

Portal FrameworkアプリケーションでJSFページを作成する際に、図11-8に示す「JSFページの作成」ダイアログで、ページに適用するページ・テンプレートを選択できます。

図11-8 「JSFページの作成」ダイアログの「ページ・テンプレート」オプション

図11-8の説明が続きます
「図11-8 「JSFページの作成」ダイアログの「ページ・テンプレート」オプション」の説明

Portal Frameworkアプリケーションでのページ作成の詳細は、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照してください。

11.5.2 Portal Frameworkアプリケーションでページに適用されたページ・テンプレートを変更する方法

ページを作成する際には、そのページで使用する特定のページ・テンプレートを選択できます(第11.5.1項「Portal Frameworkアプリケーションでのページ作成時にページ・テンプレートを適用する方法」を参照)。これによって、ページ・テンプレートへの静的参照が、ページのJSPXファイルに追加されます。例11-7に、その参照を示します。

例11-7 ページのページ・テンプレートの参照

<af:pageTemplate
    viewId="/oracle/webcenter/portalapp/pagetemplates/examplePageTemplate.jspx"
    value="#{bindings.pageTemplateBinding  }"
    id="pt1">
  <f:facet name="content"/>
</af:pageTemplate>

ページ・テンプレートのバインディングが、ページのページ定義ファイルに作成されます。例11-8に、そのバインディングを示します。

例11-8 ページへのページ・テンプレートのバインディング

<executables>
  <variableIterator id="variables"/>
  <page path="oracle.webcenter.portalapp.pagetemplates.examplePageTemplatePageDef"
        id="pageTemplateBinding" Refresh="ifNeeded"/>
</executables>

対象のページに別のページ・テンプレートを適用するには、これら両方の参照を変更する必要があります。

11.5.3 実行時にPortal Frameworkアプリケーションでページ・テンプレートの動的切替えを有効にする方法

デフォルト・ページ・テンプレート設定から、使用するページ・テンプレートを指定するEL式を使用するように、ページのJSPXファイルとページ定義ファイル内の参照を変更できます。適切な権限を持ったユーザーは、実行時管理コンソールを使用して、別のデフォルト・ページ・テンプレートに切り替えることができます。


注意:

ページ・テンプレート間の実行時の切替えは、ページ定義が関連付けられた状態でページ・テンプレートが作成されている場合にのみ可能です。


実行時のページ・テンプレートの動的切替えを有効にするには:

  1. アプリケーション・ナビゲータで、ページのJSPXファイルを右クリックし、「開く」を選択します。

  2. 「ソース」タブをクリックします。

  3. 次のコードを置き換えます。

    <af:pageTemplate viewId="pathToPageTemplate"
                     value="#{bindings.pageTemplateBinding}"
                     id="ptId">
      <f:facet name="content"/>
    </af:pageTemplate>
    

    置換後:

    <af:pageTemplate value="#{bindings.pageTemplateBinding.templateModel}"
                     id="ptId">
      <f:facet name="content"/>
    </af:pageTemplate>
    

    これは、ページによって使用されるページ・テンプレートが、ページ・テンプレートのページ定義の中で定義されていることを指定します。

  4. JSPXページを右クリックし、「ページ定義に移動」を選択します。

  5. 「ソース」タブをクリックします。

  6. 次のコードを置き換えます。

    <page path="pathToPageTemplatePageDef"
          id="pageTemplateBinding" Refresh="ifNeeded"/>
    

    置換後:

    <page viewId="${preferenceBean.defaultPageTemplate}"
          id="pageTemplateBinding" Refresh="ifNeeded"/>
    

    ${preferenceBean.defaultPageTemplate} EL式は、デフォルト・ページ・テンプレート設定からページ・テンプレートの名前を取得します。

  7. デフォルト・ページ・テンプレートは、第11.6項「デフォルト・ページ・テンプレートの選択」で説明するように設定できます。

11.5.3.1 実行時の処理内容

適切な権限を持つユーザーが実行時管理コンソールでページ・テンプレートを選択する際には、式#{bindings.pageTemplateBinding.templateModel}により常に管理コンソールで設定されたページ・テンプレートが返されるため、すべてのページでこのページ・テンプレートが使用されます。


関連項目:

Portal Frameworkアプリケーションのデフォルト設定の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のデフォルト・ページ・テンプレートの選択に関する項を参照してください。


11.6 デフォルト・ページ・テンプレートの選択

この項では、Portal Frameworkアプリケーションのすべてのページで使用される、デフォルト・ページ・テンプレートを設定する方法について説明します。


注意:

ページ・テンプレートを開発してWebCenter Portal (ポータル・ビルダー)で使用する場合、このタスクはポータル・ビルダーを使用して実行されますが、ポータルのすべてのページにおけるデフォルト・ページ・テンプレートは、アプリケーション・レベルまたはポータル・レベルのいずれかで選択されます。ポータル・ビルダーについては、ポータル間でグローバルなデフォルト設定を構成するには『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のデフォルト・ページ・テンプレートの選択に関する項、およびポータルのデフォルト・ページ・テンプレートを選択するには『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のポータルのページ・テンプレートの変更に関する項を参照してください。


Portal Frameworkアプリケーションを最初に作成する際には、pageTemplate_globe.jspx組込みページ・テンプレートが、アプリケーションのデフォルト・ページ・テンプレートとして設定されます。アプリケーション・ページの構造とレイアウトに使用する独自のページ・テンプレートを後で作成した場合は、それをデフォルト・ページ・テンプレートとして設定できます。

Portal Frameworkアプリケーションにデフォルト・ページ・テンプレートを設定するには、adf-config.xmlファイルのoracle.webcenter.portalapp.pagetemplate.pageTemplateプリファレンスを編集します。プリファレンスBean #{preferenceBean}を使用すると、実行時にadf-config.xmlのこのセクションおよびそこで指定した構成にアクセスできます。

デフォルト・ページ・テンプレートを選択するには:

  1. アプリケーション・ナビゲータの「アプリケーション・リソース」ペインで、adf-config.xmlファイルを右クリックして、「開く」を選択します。


    ヒント:

    adf-config.xmlファイルを探すには、「ディスクリプタ」ノードを開き、さらに「ADF META-INF」ノードを開きます。


  2. 「ソース」タブをクリックします。

  3. 次のIDを持つADFプリファレンスを見つけます。

    oracle.webcenter.portalapp.pagetemplate.pageTemplate
    
  4. value属性を、アプリケーションのデフォルトとして使用するページ・テンプレートのパスに設定します。次に例を示します。

    value="/oracle/webcenter/portalapp/pagetemplates/examplePageTemplate.jspx
    

    例11-9に全プリファレンス要素の例を示します。

    例11-9 デフォルトのページ・テンプレートのADFプリファレンス

    <preference id="oracle.webcenter.portalapp.pagetemplate.pageTemplate"
                desc="Default Page Template"
               value="/oracle/webcenter/portalapp/pagetemplates/examplePageTemplate.jspx"
                resourceType="Template" display="true"/>
    
  5. adf-config.xmlファイルを保存します。

これにより、実際の名前を指定せずに、デフォルト・ページ・テンプレートを参照できるようになります。例11-10に、明示的に選択されたページ・テンプレートではなく、アプリケーションのデフォルト・ページ・テンプレートをページが使用するように指示するためにページのページ定義ファイルに組み込むEL式を示します。

例11-10 アプリケーションのデフォルト・ページ・テンプレートを使用するためのEL式

<page viewId="${preferenceBean.defaultPageTemplate}"
      id="pageTemplateBinding" Refresh="ifNeeded"/>

11.7 ページ・テンプレートの削除

この項では、Portal Frameworkアプリケーションでページ・テンプレートを削除する方法について説明します。


注意:

ページ・テンプレートを開発してWebCenter Portal (ポータル・ビルダー)で使用する場合、このタスクはポータル・ビルダーを使用して実行されますが、デフォルト・ページ・テンプレートは、アプリケーション・レベルまたはポータル・レベルのいずれかで削除されます。ポータル・ビルダーについては、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のアセットの削除に関する項を参照してください。



注意:

ページ・テンプレートを削除する前に、そのページ・テンプレートを使用しているページが存在しないことを確認してください。ページ・テンプレートを削除する際に、そのページ・テンプレートへの直接参照があるページを実行しようとすると、実行時エラーが発生します。


JDeveloperでページ・テンプレートを削除するには:

詳細は、第9.4項「ポータル・リソースの削除」を参照してください。

11.8 ページ・テンプレートのチュートリアルと例

次の補足チュートリアルと例は、ページ・テンプレートに関する追加情報を示しています。