7 ページへのコンテンツの追加
このレッスンでは、WebCenterアプリケーションのファイル・システムに存在するコンテンツを公開する方法を学びます。Oracle JDeveloperを使用して、コンテキスト・リッチなアプリケーションを簡単に構築できることがわかります。また、ファイルおよびフォルダの情報を表示する様々な方法を試してみます。
図7-1に、この章を終えた時点でのページ(MyContent.jspx)の外観を示します。
図7-1 レッスン7を終えた時点でのMyContent.jspx
画像の説明
概要
次の手順で、チュートリアル・アプリケーションにコンテンツを追加します。
前提条件
このレッスンでは、第2章「チュートリアルを始める前に」でダウンロードしたサンプルにアクセスする必要があります。開始する前に、サンプル・コンテンツが格納される場所を書き留めておいてください(「サンプル・チュートリアル・ファイルのダウンロード」も参照)。
手順1: データ・コントロールの作成
この手順では、ファイル・システムに格納されているサンプル・チュートリアル・コンテンツへのアクセスおよび公開を可能にするデータ・コントロールを定義します。データ・コントロールとは、アプリケーション内のUIコンポーネントの作成に使用されるすべてのデータ・オブジェクト、コレクション、メソッドおよび操作のコンテナです。
- アプリケーション・ナビゲータで、「Model」を右クリックし、「新規」を選択します。
- 「Business Tier」ノードを開き、「コンテンツ・リポジトリ」を選択します。
- 「コンテンツ・リポジトリのデータ・コントロール」を選択し、「OK」をクリックしてウィザードを表示します。
このウィザードによって、コンテンツがファイル・システム上にある場合でも、コンテンツ・リポジトリのデータ・コントロールが作成されます。
- 「次へ」をクリックして、「ようこそ」ページをスキップします。
- データ・コントロールに名前を付けます。
MyTutorialContentと入力し、「次へ」をクリックします。
- ここでは、ファイル・システム上のコンテンツを公開することにします。「リポジトリ・タイプ」ドロップダウン・リストをクリックし、「ファイル・システム」を選択します。
また、Oracle Content DBリポジトリまたはOracleAS Portalリポジトリ内のコンテンツにアクセスするようにデータ・コントロールを設定することもできます。このようなタイプのデータ・コントロールの設定方法の詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。
- 「ベース・パス」フィールドに、先に解凍したサンプル・コンテンツのパスを入力します。たとえば、
C:¥TutorialContentなどです。
これによって、データ・コントロールにコンテンツの場所を認識させます。
- 「テスト」ボタンをクリックして、接続詳細を適切に入力したかどうかを確認します。図7-2のような
「成功しました。」というメッセージが表示されます。
図7-2 ファイル・システムのデータ・コントロール - 接続のテスト
画像の説明
- エラー・メッセージが表示された場合は、「OK」をクリックし、フルパスを指定するように注意して「ベース・パス」を編集します。テストが成功した場合は、「OK」をクリックしてメッセージ・ボックスを閉じます。
- 「次へ」をクリックします。
ファイル・システムのデータ・コントロールは、複数のデフォルト属性(name、path、URI、primaryType)と、オプションで1つのカスタム属性(lastModified)を公開します(図7-3を参照)。
図7-3 ファイル・システムのデータ・コントロール - カスタム属性構成
画像の説明
- デフォルト属性セットを受け入れるには、「終了」をクリックします。
ここで、アプリケーション・ナビゲータを見てみます。「Model」、「アプリケーション・ソース」の下に、いくつかの新しいエントリが表示されています(図7-4)。データ・コントロール、およびデータ・コントロールにより生成されるファイルの詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。
図7-4 ファイル・システムのデータ・コントロールMyTutorialContentのファイル
画像の説明
- データ・コントロール・パレットで新しいデータ・コントロールが使用可能になりますので、ここでそれを表示します。「表示」メニューから、「データ・コントロール・パレット」を選択します。
「MyTutorialContent」の下に、新しいデータ・コントロールのオブジェクト、コレクション、メソッド、パラメータおよび操作の階層リストが表示されます(図7-5)。
図7-5 データ・コントロール・パレット - MyTutorialContent
画像の説明
ファイル・システムのデータ・コントロール(MyTutorialContentなど)は、ファイルとフォルダの情報をアクセスおよび表示するための複数のメソッドを提供します。
- search: データ・コントロールを介して公開されたコンテンツに対して検索を実行できるようにします。
- advancedSearch: データ・コントロールを介して公開されたコンテンツに対して拡張検索を実行できるようにします。
- getItems: コンテンツ・リポジトリの特定の場所に格納されているファイルおよびフォルダを返します。
- getAttributes: 特定のファイルまたはフォルダの属性とその値のリストを返します。
- getURI: ファイルのURIを返します。このリリースでは、URIを介したフォルダへのダイレクト・アクセスはサポートされていません。
これらのメソッドの詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。
これから、これらのオブジェクトのいくつかを使用する方法を示します。
手順2: 設計時のページへのコンテンツの追加
この手順では、データ・コントロール・メソッドgetURIを使用してファイルへのハイパーリンクを公開する方法を学びます。まずは、MyContent.jspxという名前の新しいページを作成します。このページ上に、サンプル・ファイルの1つ(help.html)へのリンクを追加します。
- MyContent.jspxという名前の新しいJava Server Facesページを作成します。
- アプリケーション・ナビゲータで、「ViewController」を右クリックし、「新規」を選択します。
- 「カテゴリ」ペインで、「Web Tier」の下の「JSF」を選択します。
- 「項目」で「JSF JSP」を選択し、「OK」をクリックします。
- 「次へ」をクリックして、「ようこそ」ページをスキップします。
- 「UI」フィールドに
MyContentを入力します。
- 「タイプ」で「JSPドキュメント」をクリックし、「次へ」をクリックします。
- 「新規マネージドBeanでのUIコンポーネントの自動公開」を選択し、「次へ」をクリックします。
- 「タグ・ライブラリ」ページで、次のライブラリが「選択済のライブラリ」ペインに表示されていることを確認します。
ADF Faces Components 10_1_3_2_0
ADF Faces HTML 10_1_3_2_0
ADF Portlet Components 10_1_3_2_0
Customizable Components Core 10_1_3_2
JSF Core 1.0
JSF HTML 1.0
- その他のオプションは設定する必要がないので、このページで「終了」をクリックします。
ビジュアル・エディタにMyContent.jspxが開かれ、ファイル・システムからのコンテンツの追加を開始できるようになります。(ページが表示されない場合は、「設計」タブをクリックします。)
- データ・コントロール・パレットで、「MyTutorialContent」の「getURI(String)」ノードを開きます。
1つのパラメータ(path)と、1つのメソッド戻り属性URIがこの場所にリストされます(図7-6)。
図7-6 データ・コントロール・パレット - MyTutorialContent.getURI
画像の説明
- 「URI」ノードを選択し、MyContent.jspxにドラッグ・アンド・ドロップします。
データ・コントロール・パレットから項目をドラッグしてページにドロップすると、JDeveloperに適切なコンポーネントのコンテキスト・メニューが表示されます。
- コンテキスト・メニューから「リンク」を選択し、「ADF実行リンク」を選択します(図7-7を参照)。
図7-7 getURIのJDeveloperコンテキスト・メニュー
画像の説明
C:¥TutorialContent¥help.htmlにある「ヘルプ」ページへのリンクを公開するには、/help.htmlを入力することにより、ファイルを指し示すpathパラメータを使用します。
必ずスラッシュを含めてください(図7-8)。
図7-8 GetURI - アクション・バインディング・エディタ
画像の説明
- 「OK」をクリックします。
MyContent.jspx上に、デフォルトのリンク・テキスト「goLink1」を持つ新しいgoLinkが表示されます。
- 構造ウィンドウで、「af:goLink - goLink1」をダブルクリックして、デフォルト・プロパティを編集します。
- デフォルトのリンク・テキストは
「goLink1」です。このテキストをHelpという語で置き換えます(図7-9)。
「宛先」フィールドの式(#{bindings['getURI_returnURI'].inputValue})は、「ヘルプ」ページのURIをフェッチします。
図7-9 GoLinkプロパティ - ヘルプ・リンクの構成
画像の説明
- 「OK」をクリックして、GoLinkのプロパティ・ウィンドウを閉じます。
- JDeveloperのツールバーで、「すべて保存」アイコンをクリックします。
- ページを実行する前に、埋込みOC4Jサーバーを停止します。メイン・メニューから「実行」、「終了」、「埋込みOC4Jサーバー」の順に選択します。
- 「MyContent.jspx」を右クリックし、「実行」を選択して、「ヘルプ」リンクが機能することを確認します。
ブラウザ・ウィンドウにページが表示されるとき、新しい「ヘルプ」リンクが表示されます。リンクをクリックして、正しいファイルが表示されることを確認します。ブラウザは、図7-10のように表示されます。
図7-10 ファイル・システムのデータ・コントロールを介したファイル・リンク
画像の説明
手順3: 表でのフォルダ・コンテンツの表示
この手順では、データ・コントロール・メソッドgetItemsを使用して、表でファイルおよびフォルダの情報を公開する方法を学びます。次に、C:¥TutorialContentに存在するすべてのファイルがリストされた表(図7-11に示すような表)を作成します。表内の各ファイル名には、実際のファイルへのハイパーリンクを含めます。
図7-11 ハイパーテキスト・リンクとして表示されたファイル・システム・コンテンツ
画像の説明
- アプリケーション・ナビゲータで、「MyContent.jspx」をダブルクリックして、ビジュアル・エディタでページを開きます。
- データ・コントロール・パレットで、「MyTutorialContent」の「getItems」ノードを開きます。2つのパラメータ(
pathおよびtype)と「Return」オプションが表示されます(図7-12を参照)。
図7-12 データ・コントロール・パレット - MyTutorialContent.getItems
画像の説明
- まずは、このデータ・コントロールを介して使用可能なすべてのファイルとフォルダがリストされた表を作成します。これを行うには、
「Return」ノードを選択してページにドラッグし、「ヘルプ」リンク(「af:goLink - Help」)の下にドロップします。
データ・コントロール・パレットから項目をドラッグしてページにドロップすると、JDeveloperに適切なUIコンポーネントのコンテキスト・メニューが表示されます。ファイル・システムの項目は、フォーム、表、ツリーまたはナビゲーション項目として表示できます。
- コンテキスト・メニューから「表」を選択し、「ADF読取り専用表」を選択します(図7-13を参照)。
図7-13 getItemsのJDeveloperコンテキスト・メニュー
画像の説明
アクション・バインディング・エディタが表示されます(図7-14)。
- データ・コントロールのベース・パスの下のすべての内容を表示するには、
pathパラメータに/を入力します。必ず、ここには円記号ではなくスラッシュを入力してください。
- この時点では
「タイプ」は空白のままにしておいてください。これによって、表にファイルとフォルダの両方を表示することを指定します。後で、ファイルのみを表示するように表を構成します。
図7-14 getItems - アクション・バインディング・エディタ
画像の説明
- 「OK」をクリックします。
表の列の編集ウィンドウが表示されます(図7-15)。
図7-15 表の列の編集 - デフォルト
画像の説明
ここで、このページで使用可能な表示オプションをいくつか示します。ファイルおよびフォルダの名前(name)に加えて、path、URI、primaryType、lastModifiedなど、他のコンテンツ属性も公開できます。デフォルトでは、すべての属性がデフォルト・ラベルとともに公開されますが、表示されるコンテンツはカスタマイズできます。詳細なニーズに応じて、属性の削除、表示ラベルの編集、および表示順序の変更を行うことができます。
ここでは、「ラベルの表示」を、わかりやすいラベルに編集するのみにします。
- (「name」の隣の)「<属性ラベルにバインド>」をクリックし、
Nameを入力します。
次に、他の属性(path、URI、primaryType、lastModified)の表示ラベルを編集します。Path、URI、File or FolderおよびLast Modifiedのように、新しい表示ラベルを入力します(図7-16)。
図7-16 表の列の編集 - 表示ラベルのカスタマイズ
画像の説明
- 「OK」をクリックします。
MyContent.jspxの表が、図7-17のように表示されます。
図7-17 フォルダ・コンテンツを公開するための読取り専用表
画像の説明
- 今度は、ブラウザでページを表示します。「MyContent.jspx」を右クリックし、「実行」を選択します。
ページがブラウザ・ウィンドウに表示されると、MyTutorialContentデータ・コントロールを介して使用可能な(たとえば、ディレクトリC:¥TutorialContentの下にある)すべてのファイルおよびフォルダのリストが表示されます(図7-18を参照)。
図7-18 ブラウザ - 表に表示されたフォルダ・コンテンツ
画像の説明
デフォルトでは、表にファイルおよびフォルダの属性が読取り専用テキスト(af:outputText)として表示されます。次の手順では、「名前」属性をADF GoLink(af:goLink)として表示する方法を学びます。
- 構造ウィンドウ(図7-19を参照)で、表の最初の列(
「af:column - Name」)を開くと、デフォルトの表示形式(「af:outputText - #{row.name}」)が表示されます。
図7-19 「名前」列のデフォルト表示形式
画像の説明
- 「af:outputText - #{row.name}」を右クリックし、「変換」をクリックします。
- プルダウン・メニューから、「ADF Faces Core」を選択します。
- 「GoLink」を選択します(図7-20)。
図7-20 OutputTextをGoLinkに変換
画像の説明
- 「OK」をクリックし、再度「OK」をクリックして変換を確認します。
このチュートリアルでは、ファイルおよびフォルダの名前(name)がハイパーリンクとして表示されるようにGoLinkを設定することにします。これを行うには、デフォルトのGoLinkプロパティを編集する必要があります。
- 構造ウィンドウで、新しい「af:goLink - goLink 1」を右クリックし、「プロパティ」をクリックしてデフォルト設定を表示します。
- デフォルトのリンク・テキストは、「goLink 1」です。デフォルトのかわりにファイルおよびフォルダの名前(
name)を表示するには、バインディング・エディタを使用して、必要な式(#{row.name})を構築します(図7-21を参照)。
- 「テキスト」フィールドで、「バインド」をクリックします。
- 「JSPオブジェクト」を開き、「行」を開きます。
- 「名前」をダブルクリックして、式
「#{row.name}」を選択します。
- 「OK」をクリックします。
- HTTPハイパーリンクのURIを生成するには、次のようにします。
- 「宛先」フィールドで、「バインド」をクリックします。
- 「JSPオブジェクト」を開き、「行」を開きます。
- 「URI」をダブルクリックして、式
「#{row.URI}」を選択します。
- 「OK」をクリックします。
図7-21 GoLinkプロパティ - ファイル名をハイパーリンクとして構成
画像の説明
- 再度ページを実行する前に、埋込みOC4Jサーバーを停止します。メイン・メニューから「実行」、「終了」、「埋込みOC4Jサーバー」の順に選択します。
- 再度MyContent.jspxを実行します。
今度は、図7-22に示すようなハイパーリンク付きのファイルおよびフォルダ名のリストが表示されます。
図7-22 ブラウザ - ハイパーリンクとして表示されたフォルダ・コンテンツ
画像の説明
- ファイル名の1つをクリックします。
選択したファイルが、ブラウザ・ウィンドウ内に表示されます。
- フォルダの名前をクリックします。
ダイレクトURLを介してフォルダにアクセスできないため、今度は認証エラーが表示されます。フォルダには、データ・コントロールを介してのみアクセスできます。
次の手順に進む前に、これまでに行った内容をまとめてみます。最初に、MyTutorialContentデータ・コントロールに基づいて表を作成しました。デフォルトで、表にファイル・システム情報が書式設定されていないプレーン・テキストで公開されることがわかりました。次に、ファイルおよびフォルダの名前に書式設定を適用して、これらをハイパーテキスト・リンクとして表示しました。
最後に、表を整理してみます。「名前」列のみが表示されるように表を構成し、表示をファイルに限定します。
- JDeveloperに戻って、「名前」列のみが表示されるように表を構成します。
- 構造ウィンドウで、「af:table -table1」ノードを右クリックし、「プロパティ」を選択します。
- 「列のサマリー」タブをクリックします。「削除」ボタンを使用して、
「Name」列以外をすべて削除します(図7-23)。
図7-23 表のプロパティ - 列の編集
画像の説明
- 「列の詳細」タブをクリックします。
- 「ヘッダー・テキスト」に
My Tutorial Filesを入力します(図7-24を参照)。
図7-24 表のプロパティ - 列表示オプションの編集
画像の説明
- 「OK」をクリックします。
- (フォルダでなく)ファイルのみが表示されるように表を構成するには、ページ定義ファイルを編集する必要があります。
- 「MyContent.jspx」を右クリックし、「ページ定義に移動」を選択します。
- 構造ウィンドウで、「bindings」および「getItems」を開きます(図7-25)。
図7-25 MyContentPageDef.xmlでのtypeプロパティの構成
画像の説明
- 「type」をダブルクリックします。
- 「type」オプションは、
nt:fileとnt:folderです。ファイルのみが表示されるように指定するには、「NDValue」フィールドにnt:fileを入力し、「OK」をクリックします(図7-26を参照)。
図7-26 NDValue - ファイル表示のみの構成
画像の説明
- ここで、ページ定義ファイル内にデフォルトで設定されているデータ・コントロールのバインディング設定をいくつか調べます。この設定は独自のアプリケーションに使用する可能性があるので、この設定による結果を理解しておくことが重要です。
- 構造ウィンドウで、「executables」セクションを開きます。
- メソッド・イテレータ「getItemsIter」を選択します。
- 「表示」メニューから、「プロパティ・インスペクタ」を選択して、デフォルト設定を表示します。
- RangeSizeプロパティは、各ページに表示されるファイルおよびフォルダ項目の数を制御します。このチュートリアルでは、デフォルトのRangeSizeの10を保持します。
- CacheResultsプロパティは、テーブル・コンテンツがキャッシュされるかどうかを決定します。デフォルト(
true)では、結果はキャッシュされますが、コンテンツが頻繁に変更されるためにリアルタイムな更新が重要であるようなアプリケーションの場合、この動作では不都合なこともあります。このプロパティをfalseに設定してください。
ページを実行すると、ページがリフレッシュされるたびにファイル・リストが動的に更新されることがわかります。
- JDeveloperのツールバーで、「すべて保存」アイコンをクリックします。
- 再度ページを実行します。
ファイルのリストが、図7-27のように表示されます。今度は、フォルダは表示されません。
図7-27 ブラウザ - ハイパーテキスト・リンクとして表示されたファイルのみ
画像の説明
- キャッシングが無効になっていることをテストします。ファイル・システム上のファイルの1つを名前変更し、ブラウザをリフレッシュします。
テーブル・コンテンツをキャッシュしないように選択したため、新しいファイル名が即時に表示されます。
このレッスンでは、表にファイル・システム・コンテンツを公開する方法を学びました。次のレッスンでは、同じコンテンツをツリー内に表示します。
手順4: ツリーでのフォルダ・コンテンツの表示
この手順では、getItemsメソッドを使用して、ファイルおよびフォルダのコンテンツを階層ツリー形式で公開します。C:¥TutorialContentにあるファイルを表示するツリー(図7-28に示すようなツリー)を作成し、ツリー内の各ファイル名には、実際のファイルへのハイパーリンクを設定します。しかしまずは、新しいデータ・コントロールを作成します。
図7-28 ツリーに公開されたファイル・システム・コンテンツ
画像の説明
- アプリケーション・ナビゲータで、「Model」を右クリックし、「新規」を選択します。
- 「Business Tier」ノードを開き、「コンテンツ・リポジトリ」を選択します。
- 「コンテンツ・リポジトリのデータ・コントロール」を選択し、「OK」をクリックします。
- 「次へ」をクリックして、「ようこそ」ページをスキップします。
- データ・コントロールに名前を付けます。
MyTutorialContent2と入力し、「次へ」をクリックします。
- このデータ・コントロールを使用してファイル・システムからコンテンツを公開するので、「リポジトリ・タイプ」ドロップダウン・リストをクリックし、「ファイル・システム」を選択します。
- 「ベース・パス」フィールドで、先に解凍したコンテンツのパス(たとえば、
C:¥TutorialContentなど)を入力し、[Enter]を押します。
- 「テスト」ボタンをクリックして、接続詳細を適切に入力したかどうかを確認します。
「成功しました。」というメッセージが表示されます。
- エラー・メッセージが表示された場合は、「OK」をクリックし、フルパスを指定するように注意して「ベース・パス」を編集します。テストが成功した場合は、「OK」をクリックしてメッセージ・ボックスを閉じ、「終了」をクリックします。
- データ・コントロール・パレットで新しいデータ・コントロールが使用可能になりますので、ここでそれを表示します。「表示」メニューから、「データ・コントロール・パレット」を選択します(図7-29)。
図7-29 データ・コントロール・パレット - MyTutorialContent2
画像の説明
今度は、このデータ・コントロールを介して使用可能なコンテンツを階層ツリー形式で公開します。
- アプリケーション・ナビゲータで、「MyContent.jspx」をダブルクリックして、ビジュアル・エディタでページを開きます。
- データ・コントロール・パレットで、「MyTutorialContent2」の下の「GetItems」ノードを開きます(図7-30)。
図7-30 MyTutorialContent2.getItems
画像の説明
- 「Return」ノードを選択してページにドラッグし、表(「af:Table - table1」)の下にドロップします。
- コンテキスト・メニューから、「作成」、「ツリー」、「ADFツリー」の順に選択します
(図7-31を参照)。
図7-31 getItemsのJDeveloperコンテキスト・メニュー
画像の説明
アクション・バインディング・エディタが表示されます。
- ベース・パス(
C:¥TutorialContent)の下の内容をすべて表示するツリーを作成するには、pathパラメータに/を入力します(図7-32を参照)。必ず、円記号ではなくスラッシュを入力してください。
ツリーにファイルとフォルダの両方を含める必要があるため、「type」は空白にしておきます。
図7-32 アクション・バインディング・エディタ
画像の説明
- 「OK」をクリックします。
ツリー・バインディング・エディタが表示されます(図7-33)。このページについて簡単に説明します。
図7-33 バインディング・エディタ - デフォルトの「規則の編集」タブ
画像の説明
ルールは、ツリー・データ・コントロールが階層データをフェッチおよび表示する方法を定義します。デフォルトのルール設定(図7-33)では、getItemsがツリーのルートであること、ツリー・ノード(ブランチ)にname属性のみが表示されること、およびツリー・ノードには子が表示されない(「ブランチ規則アクセッサ」は<none>)ことが示されています。
次のいくつかの手順で、これらのデフォルト設定を編集します。また、各ノードの下に階層形式でファイルおよびフォルダを公開してファイル名にハイパーリンクを設定できるようにするルールを定義します。
- 「属性の表示」リストで、属性の
name、URIおよびprimaryTypeを複数選択します(図7-34を参照)。
name属性を使用して、ファイルおよびフォルダの名前をツリーに表示します。また、URI属性とprimaryType属性を使用して、ファイル・コンテンツへのハイパーリンクを構築します。その他の属性(pathやlastModified)はこのチュートリアルでは使用しないため、ここで選択する必要はありません。
図7-34 バインディング・エディタ - ルール選択
画像の説明
- 「ブランチ規則アクセッサ」で、「Items」を選択します。
これによって、ツリー・ノードには存在するすべての子が階層形式で表示されます。
- 「新しい規則を追加」をクリックします。
図7-35に示すようなメッセージが表示されます。
図7-35 新しいルールの確認ダイアログ
画像の説明
- 「OK」をクリックしてメッセージ・ボックスを閉じ、「規則の表示」タブを表示します(図7-36)。
図7-36 ツリー・バインディング・エディタ - 「規則の表示」タブ
画像の説明
- 「OK」をクリックします。
これで、MyContent.jspx上に図7-37のようなツリー構造が表示されます。
図7-37 フォルダ・コンテンツをナビゲートするためのツリー
画像の説明
- 再度ページを実行する前に、埋込みOC4Jサーバーを停止します。メイン・メニューから「実行」、「終了」、「埋込みOC4Jサーバー」の順に選択します。
- 今度は、ブラウザでページを表示します。「MyContent.jspx」を右クリックし、「実行」を選択します。
ページがブラウザ・ウィンドウに表示されると、MyTutorialContent2データ・コントロールを介して使用可能な(たとえばディレクトリC:¥TutorialContentの下にある)ファイルおよびフォルダのリストが表示されます。「More_Images」ノードを開き、このサブディレクトリ内のアクセス・コンテンツを確認します(図7-38)。
図7-38 ツリーに表示されたフォルダ・コンテンツ
画像の説明
今度は、URI属性とprimaryType属性を非表示にします。この後すぐに、これらの属性を使用してハイパーリンクを構築しますが、これらをツリー内で表示する必要はありません。
- アプリケーション・ナビゲータで、「MyContent.jspx」を選択します。
- 構造ウィンドウで、「af: tree - tree1」を右クリックし、「プロパティ」を選択します。
- 「ノード・スタンプ値」を
#{node.name}に変更し、「OK」をクリックします。
- ここで、現在のツリーの外観を確認します。「MyContent.jspx」を右クリックし、「実行」を選択します。
ファイルおよびフォルダの名前のみが表示されます(図7-39)。
図7-39 ツリーに表示されたファイルおよびフォルダ名
画像の説明
ツリーには最初の10個の項目(デフォルト)が表示されますが、これはページの定義ファイル内のGetItemsのRangeSizeプロパティを介してカスタマイズできます。
デフォルトでは、ツリーにファイルおよびフォルダ名が読取り専用テキストとして表示されますが、表に対して行ったように、これらをハイパーリンクとして表示します。前回と同様、(フォルダでなく)ファイル名にハイパーリンクを追加します。前回とは異なり、フォルダはツリーでのナビゲーションに必要なので、非表示にはできません。そのかわりに、フォルダ名を読取り専用テキストとして表示できます。このデュアル機能に対応するために、(フォルダ用とファイル用に1つずつ)2つのファセットを持つADF Faces Switcherコンポーネント(af:switcher)を使用します。
- 構造ウィンドウで、「nodeStamp」ファセットにナビゲートして、現在の表示形式
「af:outputText - #{node.name}」を表示します(図7-40)。
図7-40 ツリーのデフォルト表示形式
画像の説明
- ADF Switcherコンポーネントを追加します。
- 「nodeStamp」を右クリックし、「nodeStampの中に挿入」、「ADF Faces Core」の順に選択します。
- 「スイッチャ」を選択し、「OK」をクリックします(図7-41)。
図7-41 af:switcherコンポーネント
画像の説明
- 「af:switcher」を右クリックし、「プロパティ」をクリックします。
- 「FacetName」に
#{node.primaryType}という式を入力します。
- 「アドバンスト・プロパティ」タブをクリックします。
- 「DefaultFacet」に
nt:fileを入力し、「OK」をクリックします。
- 次に、Switcherの2つのファセットを挿入します。
- 「af:switcher」を右クリックし、「af:switcherの中に挿入」、「JSF Core」、「ファセット」の順に選択します。
- 最初のファセットに
nt:folderという名前を付け、「OK」をクリックします。
- 次に、これらの手順を繰り返し、
nt:fileという名前の2つ目のファセットを追加します(図7-42)。
図7-42 2つのファセットを持つSwitcherコンポーネント
画像の説明
- フォルダ名に追加の書式設定は必要ありません。デフォルトの表示形式
af:outputText -#{node.name}を再利用して、フォルダ名をプレーン・テキストで表示します。
- 構造ウィンドウで、「af:outputText - #{node.name}」を選択します。
「af:outputText」コンポーネントを「f:facet - nt:folder」の上にドラッグ・アンド・ドロップします(図7-43)。
図7-43 nt:folderファセットをoutputTextとして表示
画像の説明
af:goLinkコンポーネントを使用して、ファイル名をハイパーリンクとして表示します。
- 「f:facet - nt:file」を右クリックし、「f:facet - nt:fileの中に挿入」、「ADF Faces Core」の順に選択します。
- 「GoLink」を選択し、「OK」をクリックします。
- 「af:goLink - goLink 1」を右クリックし、「プロパティ」をクリックします。
- リンクの「テキスト」に、
#{node.name}という式を入力します。
- リンクの「宛先」に、
#{node.URI}という式を入力します。
- 「OK」をクリックします。
構造ウィンドウを使用して、af:switcherの構成を確認します。図7-44のように表示されます。
図7-44 構成済ファセットを表示するSwitcher
画像の説明
- JDeveloperのツールバーで、「すべて保存」アイコンをクリックします。
- 再度ページを実行します。
今度は、図7-45のようなハイパーリンク付きファイル名のツリーが表示されます。
図7-45 ツリー内に公開されたコンテンツ
画像の説明
- 任意のファイル名をクリックします。新しいブラウザ・ウィンドウに、そのファイルのコンテンツが表示されます。
フォルダ名は、Swithcerコンポーネントの結果としてのプレーン・テキストであることに注意してくだださい。
手順5: フォルダ・コンテンツの検索
ファイル・システムのデータ・コントロールには、データ・コントロールを介して公開されたデータおよびドキュメントを見つけるためのSearchメソッドが備わっています。この手順では、このメソッドを使用して、ユーザーがファイル名とキーワードでコンテンツを検索して検索結果を表に表示できるようにする検索フォームを構築します。
この演習を終えると、検索フォームは図7-46のように表示されます。それでは、始めましょう。
図7-46 データ・コントロールMyTutorialContent2に基づいた検索フォーム
画像の説明
- データ・コントロール・パレットで、「MyTutorialContent2」の下の「検索」ノードを開きます(図7-47)。
図7-47 MyTutorialContent2.Search
画像の説明
- 「検索」ノードを選択して構造ウィンドウにドラッグし、ツリー(「af:Tree - tree1」)の下にドロップします。
- コンテキスト・メニューから、「メソッドの作成」、「ADFコマンド・ボタン」の順に選択します(図7-48を参照)。
図7-48 searchメソッドのJDeveloperコンテキスト・メニュー
画像の説明
これで、アクション・バインディング・エディタが表示されます。
- ベース・パス(たとえば、
C:¥TutorialContentなど)の下の内容をすべて検索するため、pathパラメータに/を入力します。必ず、円記号ではなくスラッシュを入力してください(図7-49)。
図7-49 searchメソッドのアクション・バインディング・エディタ
画像の説明
- path属性を介して指定した位置より下のすべてのサブディレクトリにまで、自動的に検索範囲を拡張するには、「isRecursive」パラメータに
trueを入力します(図7-49)。
この検索に対して検索語やファイル名基準を事前定義するわけではないので、「keyword」フィールドと「namePattern」フィールドは空白のままにしておきます。そのかわりに、ユーザーが検索を制御できるように、検索フォーム上にこの両方のパラメータの入力フィールドを設定します。
- 「OK」をクリックします。
「検索」というラベルのコマンド・ボタンがページに表示されます。今度は、このボタンの上に、ユーザーが検索基準を入力できる入力フィールドをいくつか追加します。
- ユーザーがファイル名で検索できるようにするには、namePatternパラメータを追加します。
- データ・コントロール・パレットで、「パラメータ」ノードを開き、「namePattern」を選択します。
- 「namePattern」パラメータを「検索」ボタンの上にドラッグ・アンド・ドロップします。
- 「作成」メニューから、「テキスト」、「ラベル付ADF入力テキスト」の順に選択します。
- 構造ウィンドウで、「af:inputText #{bindings.namePattern...」をダブルクリックし、適切なラベル(たとえば、
Find files with all or part of this file name:)を入力します。
- 「ヒント」に、
Use % for wildcard searchesを入力します。
- 「OK」をクリックします。
- ユーザーがファイル・コンテンツ内の句やキーワードを検索できるようにするには、ページにkeywordパラメータを追加します。
- データ・コントロール・パレットで、「パラメータ」ノードを開き、「keyword」を選択します。
- 「keyword」パラメータを「検索」ボタンの上にドラッグ・アンド・ドロップします。
- 「作成」メニューから、「テキスト」、「ラベル付ADF入力テキスト」の順に選択します。
- 構造ウィンドウで、「af:inputText #{bindings.keyword...」をダブルクリックし、適切なラベル(たとえば、
Find files containing this word or phrase:)を入力します。
- 「OK」をクリックします。
ページは、図7-50のように表示されます。
図7-50 2つの入力パラメータを持つ検索フォーム
画像の説明
- 今度は、検索結果用の表を追加します。
- データ・コントロール・パレットで、Searchメソッドの下の「RETURN」ノードを選択します。
- メソッド「RETURN」をドラッグして、「検索」ボタンの下にドロップします。
- 「作成」メニューから、「表」、「ADF読取り専用表」の順に選択します。
- 「表の列の編集」ダイアログを使用して、デフォルトの表示設定を編集します。まず、「URI」列と「primaryType」列を削除します。
- 次に、「name」列、「path」列および「lastModifed」列の表示ラベルを編集します。たとえば、
Files Found、LocationおよびLast Modifiedというラベルを入力します(図7-51を参照)。
図7-51 検索結果表の表示ラベルの編集
画像の説明
- 「OK」をクリックします。
- JDeveloperのツールバーで、「すべて保存」アイコンをクリックします。
今度は、ブラウザで検索フォームを表示し、いくつかの検索を実行します。
- 再度ページを実行する前に、埋込みOC4Jサーバーを停止します。メイン・メニューから「実行」、「終了」、「埋込みOC4Jサーバー」の順に選択します。
- 「MyContent.jspx」を右クリックし、「実行」を選択します。
図7-52に示すような検索フォームが表示されます。
図7-52 データ・コントロールMyTutorialContent2に基づいた検索フォーム
画像の説明
- フォームの最初のフィールドは、
namePatternパラメータを公開します。ファイル名基準を入力し、「検索」ボタンをクリックし、検索結果表に表示される内容を調べます。指定した名前パターンに一致するファイルのみが表示されます。
次の検索を試行してください。
- ファイル拡張子が.htmlのファイルを検索するには、
%htmlを入力します。3つのファイルがこのパターンに一致します。
- helpという語を含むファイル名を検索するには、
%help%を入力します。help.htmlのみが一致します。
- フォームの2つ目のフィールドは、
keywordパラメータを公開します。このパラメータによって、ファイル内のコンテンツを検索できます。語または句を入力し、「検索」ボタンをクリックし、検索結果表に表示される内容を調べます。指定した語を含むファイルのみが表示されます。
前述のフィールドから%help%を削除し、次のキーワード検索を試行します。
- WebCenterという語を含むファイルを検索するには、
WebCenterを入力します。2つのファイルが表示されます。
- WebCenterおよびtutorialという語を含むファイルを検索するには、
WebCenter AND tutorialを入力します。この両方の語が含まれるのは、1つのファイルのみです。
これで、コンテンツ統合のレッスンは完了です。WebCenterアプリケーション内にファイル・システム・コンテンツを公開する方法と、検索機能を追加する方法について学びました。この方法の詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。
次のレッスンでは、Oracle ADFセキュリティを使用して、このチュートリアルで作成したページを保護します。