パート3: ユーザー・インタフェースの拡張

通常、Webアプリケーションには複数のページが含まれています。 チュートリアルのこのパートでは、アプリケーションに別のページ(検索ページ)を追加し、Oracle ADFタスク・フロー・ダイアグラマを使用して2ページ間のナビゲーション規則を定義します。 続いてOracle ADF Facesフレームワークの機能を使用して、ページに付加機能を追加します。 最後に、再利用可能なページ断片を作成して、DeptEmpPageページに追加します。

詳細を表示/非表示詳細表示
ステップ1: ページ・フローの作成
  1. アプリケーション・ナビゲータのViewControllerプロジェクトで、Page Flowsノードの下にあるadfc-configファイルを見つけます。 このファイルをダブルクリックして、エディタで開きます。 このファイルにアプリケーションのナビゲーションを定義します。

    adfc-configが選択されている状態のアプリケーション・ナビゲータ。
  2. DeptEmpPage.jsf」ファイルをアプリケーション・ナビゲータから空白のadfc-configダイアグラムにドラッグします。

    スクリーンショットの左側は、「DeptEmpPage」を選択した状態のアプリケーション・ナビゲータで、右側はタスク・フロー・ダイアグラムにDeptEmpPageが表示されています。
  3. コンポーネント・パレットから「View」コンポーネントをドラッグして、adfc-configダイアグラムにドロップします。名前をqueryに変更します。 これが、今から作成しようとしている新しいJSFページです。

    2つのビュー、DeptEmpPageとQueryを表示するタスク・フロー・ダイアグラム。
  4. コンポーネント・パレットから「Control Flow Case」を選択した後に、「DeptEmpPage」をクリックしてqueryページまで線を引きます。

    前と同じ2つのビューがコントロール・フロー・ケース線で結合されている様子を示すタスク・フロー・ダイアグラム。

    この線にgoQueryと名前をつけます。

    前と同じスクリーンショットのコントロール・フロー・ケース線にgoQueryという名前が表示されています。
  5. コンポーネント・パレットから別の「Control Flow Case」を選択して、queryページからDeptEmpPageに、先ほどとは逆のフローを作成します。 このフローにはbackと名前をつけます。

    前の手順と同様ですが、backというラベルが表示された2本目のコントロール・フロー・ケースが追加されています。
  6. ダイアグラムの「query」ビューをダブルクリックして、新しいページを作成します。 Create JSF Pageダイアログでラジオ・ボタンはデフォルトのFaceletsのままにして、「Quick Start Layout」ラジオ・ボタンを選択し、「Browse」をクリックします。

    問合せページのCreate JSF PageダイアログでBrowseボタンにカーソルを合わせている様子。
  7. Component Galleryで、Categories、TypesおよびLayoutsをデフォルトのOne Columnのままにし、Optionsペインで「Apply Themes」チェック・ボックスを選択します。

    Categories、TypesおよびLayoutsの各ペインでOne Columnを選択した状態のComponent Gallery。 「Apply Themes」チェック・ボックスが選択されています。

    OK」をクリックし、もう一度「OK」をクリックしてページを作成します。

  8. このページに従業員検索機能を追加するには、Data Controlsアコーディオンを開いてEmpDetails1を見つけます (表示されない場合は「Refresh」ボタンをクリックします)。

    「EmpDetails1」を選択した状態のData Controlsアコーディオン。
  9. EmpDetails1」データ・コントロールを展開し、その下にある「Named Criteria」ノードを展開します。 「All Queriable Attributes」を選択して新しいquery.jsfページにドラッグします。 「Query」→「ADF Query Panel」として作成します。

    Data Controlsアコーディオンで「All Queriable Attributes」を選択した状態のアプリケーション・ナビゲータ。 右側の空のページでは、「Query」→「ADF Query Panel」を選択した状態のCreateボックスが表示されています。
  10. Data Controlsアコーディオンで、「EmpDetails1」データ・コントロールを選択し、ページのcenter領域にあるqueryコンポーネントの下にドラッグします。 「Form」→「ADF Form」として作成します。

    Data Controlsアコーディオンで「EmpDetails1」を選択した状態のアプリケーション・ナビゲータ。 右側のEmployeesページにはSearchパネルが表示され、その下には、「Form」→「ADF Form」を選択した状態のCreateボックスが表示されています。

    Edit Forms Fieldsダイアログで、「Include Navigation Controls」と「Include Submit Button」のチェック・ボックスを両方とも選択します。 「OK」をクリックします。

    Edit Form Fieldsダイアログで「Navigation」と「Submit」のチェック・ボックスを選択し、「OK」ボタンにカーソルを合わせている状態。
  11. panelFormLayout」を選択したまま、プロパティ・インスペクタで、Rowsプロパティを5に設定します。

    Searchページの右側で「panelFormLayout」が選択され、プロパティ・インスペクタではRowsプロパティの値5がハイライト表示されています。
  12. Structureウィンドウで「Submit」ボタンを見つけて右クリックし、「Insert after af:command:Button - Submit」→「Button」を選択します。

    コンテキスト・メニューで「Insert after af:commandButton - Submit」→「Button」メニューが選択されている状態を示すStructureウィンドウ。
  13. プロパティ・インスペクタで、新しいボタンのTextBackに変更し、Actionプロパティにはドロップダウン・リストから「back」を選択します。 これによって、ボタンをクリックすると、ページ・フロー・ダイアグラムで定義したナビゲーションが実行されます。

    Actionプロパティのドロップダウンで「back」を選択した状態のButtonプロパティを示すプロパティ・インスペクタ。
  14. 次に、トランザクション操作をページに追加して、変更をコミットおよびロールバックできるようにします。 Data Controlsパレットで、アプリケーション・モジュール・レベルの「Operations」ノードを開いて、コミット操作とロールバック操作を見つけます。 「Commit」操作をStructureウィンドウのFirst Buttonの前にドラッグします。 ドロップ・ターゲットを要求されたら、「ADF Button」を選択します。

    Commit操作を選択した状態のData Controlsアコーディオン。その下には、Firstコマンド・ボタンの上にカーソルを合わせた状態を示すStructureウィンドウがあります。


    CreateボックスでADF Buttonを選択している状態。
  15. Rollback操作に対しても、同じステップを繰り返します。

    Rollback操作を選択した状態のData Controlsアコーディオン。その下には、Firstコマンド・ボタンの上にカーソルを合わせた状態を示すStructureウィンドウがあります。
  16. プロパティ・インスペクタで、RollbackボタンおよびCommitボタンのDisabledプロパティをdefaultにリセットし、両方のボタンが常に選択可能になるようにします。

    Disabledプロパティのドロップダウン・リストで「Reset to Default」オプションを選択している状態のプロパティ・インスペクタ。
  17. Query.jsf」タブをダブルクリックして、設計エディタのページを最大化します。 ページは以下のようになります。

    問合せページのスクリーンショット。
  18. DeptEmpPage.jsf」タブをクリックしてページに戻ります。 このファイルや他の任意のファイルに素早くナビゲートするには、JDeveloperの右上にあるGlobal Findボックスにファイル名をタイプします。

    ページの右上にある検索ボックスにDeptと入力されています。 ウィンドウには検索操作の結果が表示され、DeptEmpPageが選択されています。

    それからファイル名をクリックして、エディタで開きます。

  19. Page Designで、「Departments」アコーディオンを展開します。 コンポーネント・パレットから、「Button」コンポーネントを選択して、ページのDepartmentsアコーディオンにあるFirstPreviousボタンの間にドラッグします。 または、「First」ボタンを右クリックし、「insert after」→「button」を選択して新しいボタンを追加できます。

    コンポーネント・パレットで「Button」コンポーネントを選択し、カーソルを使ってDepartmentsページ(左側)にドラッグしている様子。
  20. プロパティ・インスペクタを使用して、ボタンのTextQueryに変更し、ActionプロパティにgoQueryと入力するか、使用可能なドロップダウン・リストから「goQuery」を選択します。 これによって、ボタンをクリックすると、ページ・フロー・ダイアグラムで定義したナビゲーションが実行されます。

    TextプロパティにQueryと入力し、Actionプロパティの右にあるドロップダウン・リストで「goQuery」オプションを選択した状態を示すプロパティ・インスペクタ。
  21. JDeveloperメニュー・バーのSave AllJDevのメイン・ツールバーのSaveAllアイコン」アイコンをクリックして作業内容を保存し、DeptEmpPage.jsfページを右クリックして「Run」を選択します。

    「DeptEmpPage」を選択し、コンテキスト・メニューから「Run」を選択した状態のアプリケーション・ナビゲータ。
  22. ブラウザでページが表示されたら、「Query」ボタンをクリックして新しいページに移動します。 Searchページで「Advanced」をクリックして詳細な検索条件を表示します。

    ページを実行したときのブラウザ表示。カーソルをAdvancedボタンに合わせています。
  23. FirstNameフィールドはデフォルトのStarts withにしたまま、文字Gを入力します。
    Search」をクリックします。下のフォームにGuy Himuroのレコードが表示されます。

    FirstName検索フィールドにGを入力し、Searchボタンにカーソルを合わせた状態のブラウザ表示。
  24. このフォームを使用して、検索条件の保存、さらに複雑な問合せの作成、および従業員のデータの更新を試します。 作成したビュー・オブジェクトの定義(部門名のデータやJobIdの値のリスト、従業員の年間給与など)と一致するデータのビューが、このフォームにどのように表示されるか確認してください。
    データを変更し、必要に応じてトランザクションをコミットしたりロールバックしたりすることもできます。

    終了したらブラウザ・ウィンドウを閉じます。

ステップ2: 部分ページ・リフレッシュの使用

次は、一連の手順を実行しながらADF Faces Frameworkの機能の一部について理解を深めます。 Oracle ADF Facesコンポーネントの持つ宣言的な開発機能を活用し、Ajaxの他の機能を使用してページを機能強化します。

    以降のサブステップでは、Oracle ADF Facesが備える部分ページ・リフレッシュ機能を使用します。 詳細を表示/非表示詳細表示
  1. query.jsfファイルがまだ開いていない場合は、設計エディタで開きます。 「Salary」フィールドを選択します。 プロパティ・インスペクタで、idプロパティの値を「sal」に設定します。

    「Salary」フィールドを選択した状態のQueryページ。右側は、Idプロパティにsalが設定されている様子を示すプロパティ・インスペクタ。
  2. さらに、プロパティ・インスペクタの「Behavior」ノードを展開し、AutoSubmitプロパティをtrueに設定します。

    AutoSubmitプロパティをtrueに設定した様子を示すプロパティ・インスペクタ。
  3. Structureウィンドウで、「AnnualSalary」フィールドを選択します (または、「query.jsf」タブをダブルクリックしてウィンドウを最大化してから、設計エディタでこのフィールドを見つけます)。
    BehaviorセクションでPartialTriggersプロパティを見つけて、右側の矢印をクリックし、「Edit」を選択します。

    「AnnualSalary」フィールドを選択した状態のStructureウィンドウ。右側にプロパティ・インスペクタがあり、PartialTriggersプロパティのドロップダウン・リストで「Edit」オプションが選択されています。
  4. Edit Propertyダイアログで、Salaryフィールドを見つけ、青い矢印を使用して右に移動します。 「OK」をクリックします。

    Edit Property: Partial Triggersダイアログ。「inputText -sal」を選択して右向きの矢印にカーソルを合わせている様子。
  5. JDeveloperメニュー・バーのSave Allアイコン「JDevメイン・ツールバーのSaveAllアイコン」をクリックして作業内容を保存し、DeptEmpPage.jsf実行します。

    「DeptEmpPage」を選択し、コンテキスト・メニューのRunにカーソルを合わせた状態のアプリケーション・ナビゲータ。
  6. ページが表示されたら、Departmentsパネルの「Query」ボタンをクリックします。

    Departmentsページを実行し、Queryボタンにカーソルを合わせた状態の表示。
  7. Searchページで、名前がA%で始まる従業員を探します。

    FirstNameフィールドにA%を入力し、Searchボタンにカーソルを合わせた状態のSearchページ。

    SalaryとAnnualSalaryの値に注目します。

    Alexander Khooのレコードを表示するSearchページ。
  8. Salaryフィールドを更新して、別のフィールドにタブで移動します。 Salaryフィールドを離れると、AnnualSalaryフィールドがすぐに変更されることを確認します。 ただし、リフレッシュされるのはこのフィールドのみで、ページ全体はリフレッシュされません。

    Salaryを更新したAlexander Khooのレコード。Salaryフィールドからカーソルを移動したため、AnnualSalaryも更新されています。
  9. ブラウザを閉じます。

ステップ3: ADF AutoSuggest Behaviorの使用
af:autoSuggestBehaviorコンポーネントは、ユーザーが入力コンポーネントに入力するときに、候補を提示するドロップダウン・リストを表示します。 詳細を表示/非表示詳細表示

  1. queryページで「JobId」フィールドを選択します。

    JobIdフィールドが選択された状態のQueryページ。
  2. コンポーネント・パレットで「Operations」ノードを展開し、BehaviorセクションでAuto Suggest Behaviorを見つけます。 「Auto Suggest Behavior」操作をJobIdフィールド上にドラッグ・アンド・ドロップします。

    queryページの右側にコンポーネント・パレットが表示され、「Auto Suggest Behavior」操作を選択してカーソルを使用してJobIdフィールドにドロップしようとしている様子。
  3. Insert Auto Suggest Behaviorダイアログ・ボックスに#{bindings.JobId.suggestedItems}と入力します。 「OK」をクリックします。

    Suggested Itemsフィールドに入力したバインド文字列がハイライト表示された状態のInsert Auto Suggest Behaviorダイアログ。
  4. 作業内容を保存し、queryページを実行します。

    「query」を選択し、コンテキスト・メニューの「Run」がハイライト表示された状態のアプリケーション・ナビゲータ。
  5. EmployeeIdフィールドに121と入力し、「Search」ボタンをクリックします。 Adam Frippのレコードで、JobIdフィールドに's'と入力して更新します。 's'で始まるいくつかの役職名が候補として表示されます。

    EmployeeIdフィールドに121と入力し、結果フィールドにAdam Frippのレコードが表示された状態のSearchページ。 JobIdフィールドに文字's'が入力され、文字's'で始まる役職名のリストが表示されています。
  6. 's'の後に'a'を追加し、候補リストが変更されることを確認します。

    's'の後に文字'a'が入力されたJobIdフィールドを示すSearchページ。 リストには'sa'で始まる3つのエントリが表示されています。
  7. 残っている3つの選択肢から「Sales Representative」を選択し、フィールドに移入します。

    「Sales Representative」を選択している状態を示す図。
  8. 変更内容を保存せずにブラウザを閉じます。

ステップ4: ドロップダウン・メニューと操作コンポーネントの使用

このステップでは、ページにドロップダウン・メニューを追加し、Oracle ADF Faces操作コンポーネントをいくつか使用して、ページにJavaScriptベースの操作を追加します。追加するのは、表データをExcelスプレッドシートにエクスポートしたり、印刷可能なページを作成したりする操作です。

  1. DeptEmpPage.jsfファイルで、Employees表を囲むパネル・コレクションのmenusファセット内をクリックします。 右クリックしてコンテキスト・メニューを表示し、「Insert Inside Facet - menus」→「Menu」を選択します。

    DeptEmpPageの上部でmenusファセットを選択し、コンテキスト・メニューの「Insert inside Facet」を選択した状態。
  2. プロパティ・インスペクタで、TextプロパティをMy Optionsに設定します。

    メニューのTestプロパティを'My Options'に設定した様子を示すプロパティ・インスペクタ。
  3. プロパティ・インスペクタの「Behavior」ノードを展開し、Detachableプロパティをtrueに設定します。

    Detachableプロパティを'true'に設定した様子を示すMenuのプロパティ・インスペクタ。
  4. Structureウィンドウでメニュー・コンポーネントを右クリックし、「Insert inside af:menu - My Options」→「Menu Item」を選択します。

    Structureウィンドウでメニューを選択し、コンテキスト・メニューで「Insert Inside af:menu My Options」→「Menu Item」を選択した状態。
  5. プロパティ・インスペクタで、新しいメニュー項目のTextプロパティをExport to Excelに設定します。

    TextプロパティをExport to Excelに設定した様子を示すメニュー項目のプロパティ・インスペクタ。
  6. 新しいメニュー項目Export to ExcelをStructureウィンドウで選択した状態で、コンポーネント・パレットのADF FacesコンポーネントのOperationsノードに含まれる「Listeners」セクションを開きます。
    Export Collection Action Listener」コンポーネントを見つけて、Structureウィンドウのメニュー・オプションExport to Excelにドラッグします。

    Structureウィンドウとプロパティ・インスペクタを並べて開き、Export CollectionAction Listenerをメニュー項目Export to Excelの上にドラッグしている様子。
  7. Insert Export Collection Action Listenerダイアログで、ExportedIdフィールドの横にある下矢印をクリックし、「Edit」を選択します。

    ドロップダウン・メニューの「Edit」オプションが選択されている状態のInsert Export Collection Action Listenerダイアログ。
  8. Edit Propertyダイアログでページの構造をナビゲートして、「table - t1」コンポーネントを見つけて選択します。 「OK」をクリックします。

    「table」を選択し、カーソルを「OK」に合わせた状態のEdit Property:ExportedIdダイアログ。
  9. Typeドロップダウン・リストから「excelHTML」を選択して「OK」をクリックします。

    TypeフィールドにexcelHTMLがハイライト表示され、「OK」オプションにカーソルを合わせた状態のInsert Export Collection Action Listenerダイアログ。
  10. メニューにオプションをもう1つ追加します。 Structureウィンドウでメニュー・コンポーネント「Export to Excel」を右クリックし、コンテキスト・メニューから「Insert After af:commandMenuItem - Export to Excel」→「Menu Item」を選択します。

    Structureウィンドウでメニュー項目を選択し、コンテキスト・メニューで「Insert after af:commandMenuItem - Export to Excel」→「Menu Item」を選択した状態。
  11. 新しいメニュー・オプションのTextプロパティをPrintable Pageに設定します。

    TextフィールドにPrintable Pageがハイライト表示された状態のメニュー項目のプロパティ・インスペクタ。
  12. コンポーネント・パレットのOperationsノードの下にあるBehaviorセクションで、「Show Printable Page Behavior」操作を選択して新しいメニュー項目に追加します。 つまり、作成した新しいメニュー・オプションにドラッグ・アンド・ドロップします。

    Structureウィンドウとコンポーネント・パレットを並べて表示し、「Show Printable Page Behavior」操作をメニュー項目Printable Pageにドラッグしている様子。
  13. JDeveloperメニュー・バーのSave Allアイコン「JDevツールバーのSaveAllアイコン」をクリックして作業内容を保存し、「Run」を選択します。

  14. ページが表示されたら、新しいメニューをクリックして分離します。

    DeptEmpPageを実行し、カーソルを使ってMy Optionsメニューをページ上の新しい場所に移動している様子。
  15. 次に、作成したメニュー・オプション(Export to Excelなど)を1つ1つ起動します。

    「Export to Excel」メニュー・オプションを選択した状態のMy Optionsメニュー

    Excelファイルにアクセスするには、ブラウザ・ウィンドウのファイルのダウンロードを受け入れる必要があります。

    DeptEmpPageページの上部にInternet Explorerのメッセージが表示され、メニュー・オプションから「Download File」オプションが選択された状態を示すスクリーンショット。
  16. Printable Pageメニュー・オプションを試します。

    「Printable Page」メニュー・オプションを選択した状態のMy Optionsメニュー。

    これで、ページを印刷できます。

    ページのPrintビューのスクリーンショット。

    ブラウザ・ウィンドウを閉じます。

ステップ5: ページへのCRUD操作コンポーネントの追加
この後のいくつかのタスクでは、Oracle JDeveloperを使用していくつかのデータ操作をビュー・オブジェクトで使用できるようにし、それらの操作を試します。 詳細を表示/非表示詳細表示 このステップでは、Delete操作とCreateInsert操作の追加方法を説明します。 ユーザーが新しい行を挿入しようとしてCreateInsertボタンをクリックしたら、表がリフレッシュされて新しい空の行が表示される必要があります。 そのために、このチュートリアルの本パートのステップ2で使用したPartial Page Refresh機能をここでも使用します。このビュー・オブジェクトではバインド変数を使用して従業員の電子メールを問合せに渡します。
  1. query.jsf」タブをクリックしてQueryページに戻り、Structureペインを開きます。 Data Controlsアコーディオンで「EmpDetails1」ノードを展開し、その下にある「Operations」ノードを展開します。 「CreateInsert」操作を選択します。

    「EmpDetails1」ノードと「Operations」ノードを展開したData Controlsアコーディオン。 「CreateInsert」操作が選択されています。
  2. Structureペインの「CreateInsert」操作を、employeesフォームのフッター・ファセットのpanelGroupLayoutにドラッグします。 ADF Buttonとして作成します。

    Data ControlsアコーディオンとStructureウィンドウが上下に並んだ図。 CreateInsert操作をQueryページのフッター・ファセットのpanelGroupLayoutにドラッグしています。 「ADF Button」オプションが選択されたCreateメニューが表示されています。
  3. プロパティ・インスペクタで、ボタンのIdプロパティをCreateInsertに設定します。

    IdプロパティをCreateInsertに設定した様子を示すADF Buttonのプロパティ・インスペクタ。
  4. さらに、プロパティ・インスペクタの「Behavior」ノードを展開し、PartialTriggersプロパティのドロップダウン・リストから「Edit」を選択します。

    ADF Buttonのプロパティ・インスペクタでPartialTriggersプロパティのドロップダウン・ボックスが表示されている様子。 「Edit」オプションが選択されています。
  5. Editウィンドウで、ページのコンポーネントを下にスクロールし、CreateInsertボタンを表示します。 ボタンをSelectedペインへ移動します。

    「CreateInsert」コマンド・ボタンを選択し、Selectedペインに移動しようとして矢印にカーソルを合わせている状態を示すEdit Property: PartialTriggersダイアログ。

    OK」をクリックします。 この操作により、CreateInsertコンポーネントは表をリフレッシュさせるトリガーとして定義されます。

  6. 同様に、EmpDetails1からページ・フッターのpanelGroupLayoutにDelete操作をドロップして、Delete操作を追加します。 前回と同様、ADF Buttonとして作成します。

    「EmpDetails1」ノードと「Operations」ノードを展開し、「Delete」操作を選択したData Controlsアコーディオン。
  7. 2つのボタンはqueryページの下部に表示されます。

    Queryページの設計時の表示。2つの新しいボタンが右下に表示されています。
  8. 作業内容を保存し、Queryページを実行します。

  9. ページが表示されたら、LastNameフィールドにF%と入力し、「Search」ボタンをクリックします。 姓がFで始まる最初の従業員レコードが表示されます。

    Queryページを実行したときの表示。LastNameフィールドにF%と入力され、Searchボタンにカーソルが合わせられていて、Pat Fayの従業員レコードが表示されています。
  10. CreateInsert」ボタンをクリックします。 ページがリフレッシュされ、フィールドが消去されて新しいレコードを挿入できる状態になります(ただし、HireDateフィールドはデフォルトで今日の日付設定されるため、リフレッシュされません)。

    Queryページを実行したときの表示。前と同様、LastNameフィールドにF%が入力されています。 カーソルはCreateInsertボタンに合わされています。Pat fayのレコードがリフレッシュされてフィールドが空になり、新しいレコードを挿入できる状態になっています。

 

ステップ6: パラメータに基づく問合せ専用のビジネス・サービスの作成
このステップでは、エンドユーザーが電子メール・アドレスを使用して従業員名を検索できるようにするビュー・オブジェクトを作成します。 詳細を表示/非表示詳細表示
  1. アプリケーション・ナビゲータで、「demo.model」パッケージを見つけて右クリックし、「New View Object...」を選択します。

    「demo.model」パッケージを選択し、コンテキスト・メニューから「New View Object」を選択した状態のアプリケーション・ナビゲータ。
  2. Create View Objectウィザードで、NameプロパティをEmpByEmailに設定し、データソースとして「SQL Query」ラジオ・ボタンを選択します。 「Next >」をクリックします。

    CreateView ObjectウィザードのStep 1。NameフィールドでEmpByEmailがハイライト表示されています。 カーソルはNext >ボタンに合わせられています。
  3. Create View Objectウィザードのステップ2で、次の問合せを入力します。

    select first_name,last_name from employees where email=:p_email

    p_emailの前の':'は、それが問合せに渡される変数であることを意味します。

    Test and Explain」ボタンをクリックして、問合せを検証します。

    ウィザードのステップ2の一部を示すスクリーンショット。Select文と、この文をテストした後のResultsボックスを示しています。 Resultボックスには'Query executed successfully'と表示されています。

    Close」をクリックし、「Next >」をクリックします。

  4. Create View Objectウィザードのステップ3で、「New」ボタンをクリックして、新しいバインド変数を定義します。 Nameプロパティをp_emailに設定します。

    ウィザードのステップ3。Variable Nameボックスのバインド変数p_emailがハイライト表示されています。 「Literal」ラジオ・ボタンが選択され、Updatableチェック・ボックスにチェックが入っています。

    Control Hints」タブをクリックして、Label TextEmailに設定します。

    前と同じステップ3の図。今度は「Control Hints」タブが選択されています。 Label TextフィールドのEmailがハイライト表示されています。
  5. ウィザードのステップ8に到達するまで、「Next」をさらに数回クリックして、すべてのデフォルトを受け入れます。
    ここで、「Add to Application Module」チェック・ボックスにチェックを入れて、新しいビューをデータ・モデルに加えます。
    Finish」ボタンをクリックします。

    「Add to Application Module」チェック・ボックスが選択されたウィザード(ステップ8)。
  6. 作業内容を保存してからOracle Business Component Browserを実行し、新しいビューをテストします。 新しい「EmpByEmail1」ビューをダブルクリックし、変数に値を挿入するように指示されたらSKINGと入力して「OK」をクリックし、この電子メール・アドレスの結果を取得します。

    Business Componentテスターの実行方法。 詳細を表示/非表示詳細表示
    「EmpByEmail」を選択したBusiness Component Browser。Bind Variablesポップアップ・ウィンドウではValueフィールドのSKINGがハイライト表示され、カーソルがOKボタンに合わされています。


    前の図の「OK」をクリックした結果を示すBusiness Component Browser。 FirstNameフィールドとLastNameフィールドに、変数に入力した電子メールの値に対する値が表示されています。
  7. 別の値を試してみるには、「Edit Bind Variables」ボタンをクリックします。

    ツールバーのEditアイコンにカーソルを合わせた状態のBusiness Component Browser。 アイコンをクリックした後にBind Variablesポップアップが再表示され、Valueフィールドに新しい電子メール・アドレスが入力されるのを待機している状態。

    Oracle Business Component Browserを閉じます。

ステップ7: 再利用可能なページ断片の作成
このステップでは、再利用可能なページ断片を作成します。 詳細を表示/非表示詳細表示
  1. まず、このページ固有の新しいタスク・フローを作成します。
    アプリケーション・ナビゲータで「ViewController」プロジェクトを右クリックし、「New..」を選択します。

    ViewControllerプロジェクトを選択し、コンテキスト・メニューから「New」メニュー・オプションを選択した状態のアプリケーション・ナビゲータ。
  2. Web TierJSF/Faceletsカテゴリで、「ADF Task Flow」を選択します。

    Categoriesペイン(左側)で「JSF/Facelets」を選択し、Itemsペイン(右側)で「ADF Task Flow」を選択した状態のNew Gallery。

    OK」をクリックします。

  3. Create Task Flowダイアログで、File Nameプロパティをsearch-email-flow.xmlに設定します。
    Create as Bounded Task Flow」と「Create with Page Fragments」の両方のチェック・ボックスが選択されていることを確認します。

    File Nameボックスのsearch-email-flow.xmlがハイライト表示され、「Create as Bounded Task Flow」と「Create with Page Fragments」の両方のチェック・ボックスが選択されているCreate Task Flowダイアログ。

    OK」をクリックします。

  4. 設計エディタで、「View」コンポーネントをコンポーネント・パレットから空のダイアグラムにドラッグして、searchEmailという名前を付けます。 このフローで使用するのは1ページのみですが、複数ページを持つバウンド・タスク・フローを使用し、それらを他のJSFページに含めることもできます。

    ビューが1つ追加されたタスク・フロー・ダイアグラム。searchEmailという名前がハイライト表示されています。
  5. 新しい「searchEmail」ビュー・コンポーネントをダブルクリックして、ページ断片を作成します。
    表示されるダイアログですべてのデフォルトを受け入れて、ファイル名がsearchEmail.jsffであることを確認します。 これにより、ページがページ断片として作成され、他のJSFページに含めることができます。 「OK」をクリックします。

    File NameフィールドのsearchEmail.jsffがハイライト表示され、「OK」ボタンにカーソルを置いた状態のCreate ADF Page Fragmentダイアログ。
  6. 設計エディタに空のページが表示されます。 必要に応じて「Data Controls」アコーディオンを展開し、「Refresh」ボタンをクリックして、新しいEmpByEmailデータ・コントロールがリストに表示されることを確認します。

    「EmpByEmail1」ノードを選択した状態のData Controlsアコーディオン。
  7. 新しい「EmpByEmail1」ビューと、その下にある「Operations」ノードを開きます。 「ExecuteWithParams」操作を選択します。 この操作を使用して、このビューに対して必要なパラメータを渡して問合せを実行します。

    前と同じ図。EmpByEmailノードとOperationsサブノードが開いています。 「ExecuteWithParams」操作が選択されています。

  8. 新しいページに「ExecuteWithParams」操作をドラッグし、ADF Parameter Form...として作成します。

    Data Controlsアコーディオンで「ExecuteWithParams」操作を選択し、searchemailページ断片にカーソルがあり、CreateボックスのADF Parameter Formにカーソルを合わせた状態のアプリケーション・ナビゲータ。
  9. Edit Form Fieldsダイアログで、p_email値の表示ラベルをデフォルトからEmailに変更します。 「OK」をクリックします。

    「p_email」フィールドを選択し、Display LabelフィールドをEmailに変更したEdit Form Fieldsダイアログ。
  10. このページの設計エディタで、「ExecuteWithParams」ボタンをクリックし、プロパティ・インスペクタを使用してTextプロパティをFind Detailsに変更します。

    設計エディタでsearchEmail.jsffを開き、「ExecuteWithParams」ボタンを選択している様子。 プロパティ・インスペクタでは、TextプロパティがFind Detailsに設定されています。
  11. Data Controlsアコーディオンから、「EmpByEmail1」ビューをボタンの下のページにドラッグします。 「Form」→「ADF Read-only Form..」として作成します。

    Data Controlsアコーディオンで「EmpByEmail」を選択した状態のアプリケーション・ナビゲータ。 設計エディタには、ビューがADF Read-only Formとしてページ断片にドロップされている様子が示されています。
  12. Edit Form Fieldsダイアログに表示されるデフォルトを受け入れて、「OK」をクリックします。 作業内容を保存します。

    「OK」ボタンにカーソルを合わせ、デフォルト値を受け入れようとしているEdit Form Fieldsダイアログ。

    ページは次のように表示されます。

    ページ断片の設計時の表示。
  13. これで新しいバウンド・タスク・フローにページ断片が含まれました。次に、完成したバウンド・タスク・フローを他のJSFページに加えます。
    アプリケーション・ナビゲータで、DeptEmpPage.jsfファイルを見つけて、設計エディタで開きます(まだ開いていない場合)。 コンポーネント・パレットのLayoutセクションから、「Separator」コンポーネントをドラッグして、DeptEmpPage.jsfページの左のアコーディオンにあるDepartmentsフォームの下にドロップします。

    コンポーネント・パレットで「Separator」コンポーネントを選択し、カーソルを使ってDepartmentsページにドロップしようとしている様子。
  14. 作成した新しいフローをRegionとして既存のページに追加します。
    アプリケーション・ナビゲータから、「search-email-flow.xml」ファイルをドラッグして、DeptEmpPage.jsfページの左のアコーディオンにある新しいセパレータの下にドロップします。 Regionとして作成します。

    アプリケーション・ナビゲータで「search-email-flow」を選択し、カーソルをDepartmentsページに合わせ、フローをRegionとしてドロップしようとしている様子。
  15. ページは次のスクリーンショットのようになります。

    完成したページの設計時の表示。
  16. 作業内容を保存し、更新したDeptEmpPage.jsfページを実行します。
    ブラウザにページが表示されたら、Emailフィールドに電子メールの値を入力し、「Find Details」ボタンを押して、新しい機能をテストします。

    Departmentsページを実行し、EmailフィールドにSKINGと入力してFind Detailsボタンにカーソルを合わせた状態の表示。
  17. 従業員名の情報が返されます。

    前と同じ実行時の図。送信した電子メールに対応するFirstNameとLastNameが表示されています。
まとめ
このチュートリアルでは、データベースとやり取りする小規模なWebアプリケーションを作成しました。 このチュートリアルで学習した内容は、以下のとおりです。 リッチWebアプリケーションの構築の詳細は、下記のWebサイトを参照してください。

Bookmark Print すべて表示 | すべて非表示
トップへ戻る

このページはお役に立ちましたでしょうか。



Copyright © 2011, Oracle and/or its affiliates. All rights reserved.