Oracle JDeveloperを使用したADF
Faces/Trinidadの概要
このチュートリアルでは、JavaServer Faces開発者向けに、Oracle ADF
Facesが提供する非常に複雑なユーザー・インタフェース・コンポーネントの一部と、オープンソースのTrinidadコンポーネントを紹介します。い
ずれもApache Incubatorが提供するコンポーネントです。Oracle JDeveloperを使用してADF Facesを説明します。
約45分
このチュートリアルでは、以下のトピックについて説明します。
このアイコンの上にカーソルを置くと、すべてのスクリー
ンショットがロードし、表示されます。(警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・
タイムが遅くなる場合があります。)
注:各手順に関連したスクリーンショットのみを表示する場合は、それぞ
れの手順にあるアイコンの上にカーソルを置いてください。スクリーンショットをクリックすると、非表示になります。
このチュートリアルでは、一連の個別トピックを通して、Oracle
JDeveloperを使用したADF
Facesについて説明します。ビルトイン・アプリケーションから始めて、複雑なUIコンポーネントをいくつか実装します。ビルトイン作業領域では、この
ほかメニューやページの部分レンダリングなどの最新機能を使用します。
トピック・リストに戻る
このチュートリアルを始める前に、次のことを確認してください。
| 1. |
Oracle
JDeveloper(10.1.3.1.0)にアクセスできるか、またはインストール済みであること。この製品は、Oracle
Technology Networkからダウンロードできます。
|
| 2. |
10.1.3.1向けにここをクリック、あるいは10.1.3.2向けにここをクリックして、ビルトイン・アプリケーションをzipファイ
ル形式でシステムにダウンロードします。
|
| 3. |
jsftrinidad.zipファ
イルを(<jdev_home>/jdev/mywork/)
ディレクトリに解凍します。
|
| 4. |
Oracle JDeveloperを起動します。 解凍先のルート・ディレクトリ(<jdev_home>)
にあるJDeveloper実行可能ファイル(jdeveloper.exe)
をダブルクリックします。
「ユーザー設定の移行」ダイアログ・ボックスが開いたら、「い
いえ」をクリックします。
「今日のヒント」ウィンドウを閉じます。
|
| 5. |
Oracle JDeveloper IDEが表示されます。
|
| 6. |
Oracle JDeveloperで「ファイル」
→「開く」を選択します。Openダイアログで、 (<jdev_home>/jdev/mywork/jsftrinidad)
ディレクトリのjsftrinidad.jwsファイルを選択して、「開
く」をクリックします。
|
トピック・リストに戻る
ADF
Facesフレームワークは、コマンド・コンポーネントを使用して他のコンポーネントの一部をリフレッシュできます。
|
1.
|
Oracle JDeveloperでviewlayerプ
ロジェクトを開いて右クリックし、コンテキストから「JSFナビゲーションを開く」を選択します。
ダイアグラムは、次のように表示されます。
|
| 2. |
Dialog.jspxアイコンをダブルクリックして、ページから設計エディタを開き
ます。
このページには、定義済みの入力テキスト・フィールドがあります。ここに2つのドロップダウン・リストを追加します。
|
|
3.
|
コンポーネント・パレットからSelectOneChoiceコンポーネントをドラッ
グして、Address入力テキスト・フィールドの下にドロップします。リスト・ソースに
SelectOneChoiceプロパティとターゲット値プロパティをバインドするためのダイアログが表示されます。
|
|
4.
|
「選択」タブで、「値」フィールドの隣にある「バ
インド」ボタンを押して、dialogbeanマネージドBeanを検索します。このBeanで、stateSelectItemsを
選択したら、「 」ボタ
ンをクリックして式ペインに追加し、「OK」をクリックします。
式言語ビルダーを閉じると、次のバインド文字列を作成します。#{dialogbean.stateSelectItems}宣
言型エディタが必要ない場合は、値フィールドに直接文字列を入力することもできます。
「共通プロパティ」タブで、Label値にStateを、
Value値に#{userbean.state}を入力します。これによって、リストから選択された値がUser
Beanに書き込まれたことを確認できます。User Beanとは、このプロジェクトのモデルを示すものです。
「Advanced Properties」タブを選択して、バイン
ディング・プロパティを選んだら「 」ボタンをクリックして、バインディング・ダイアログを
起ち上げます。このダイアログで、マネージドBeanの「dialogbean」エントリを選択します。
プロパティ・フィールドで、「selectOneChoice1」
を選択したら、「OK」をクリックして「Advanced Properties」タブ
に戻ります。
|
|
5.
|
さらに、「Advanced Properties」タブで次のプロパティを設定しま
す。
| プロパティ |
値 |
| AutoSubmit |
true |
| Id |
selectOneChoice1 |
| Immediate |
true |
「OK」をクリックします。
注:Immediateプロパティを
trueに設定すると、選択操作上必要がないことからJSFライフサイクルが無視されます。
|
|
6.
|
他のSelectOneChoiceコンポーネントをドラッグして、Stateの
下にドロップします。
|
|
7.
|
「選択」タブで#{dialogbean.citySelectItems}に
値を追加するか、式言語ビルダーを使用します。
|
|
8.
|
「共通プロパティ」タブで、Label値にCity、
Value値に#{userbean.city}を
入力します。
|
|
9.
|
「Advanced Properties」タブで「バインディング」
プロパティを選択します。「 」ボタンをクリックします。
バインディング・ダイアログで、マネージドBeanの一覧から「dialogbean」
を選択します。プロパティ値で「selectOneChoice2」を選択し
ます。
「OK」をクリックして、新規バインディングを作成します。
|
|
10.
|
「PartialTriggers」プロパティを選択し、「 」ボタンを
クリックしてPartialTriggersダイアログを起ち上げます。
「新規」ボタンをクリックして、新規に作成された選択肢からドロップダウン・リストを
表示させます。ドロップダウン・リストから「selectOneChoice1」を選択します。
注:この設定を行うことで、State
SelectOneChoiceが選択された値を変更するたびに、SelectOneChoiceはリフレッシュされます。依存関係リストボックスを作成
する場合は、ADF Facesで部分ページ・レンダリングを使用します。
SelectOneChoiceダイアログは、「OK」
をクリックして閉じます。
|
|
11.
|
アプリケーション・ナビゲータでDialog.jspxを右クリックして、コンテキストから「実行」を選択
します。
|
|
12.
|
ダイアログ・ページがデフォルトのブラウザにロードされ、追加した2つの空のドロップダウン・リストが表示されます。
|
|
13.
|
州リストから1つ選択します。
|
|
14.
|
次に、都市リストから1都市を選択します。
注:部分ページ・レンダリングは、都市の値を表示する際に使用されます。都市リスト
は、選択する州に応じて変わります。
ブラウザ・ウィンドウを閉じます。
|
トピック・リストに戻る
ADF
Facesダイアログ・フレームワークは、モーダル・ダイアログ・ウィンドウを表示して、情報の検索、選択、および提供が可能です。ダイアログのプロセ
ス・スコープを使用すると、ページ間で値を共有できる、ウィザード形式のアプリケーションを作成できます。リターン・リスナーをダイアログに登録すること
で、ユーザーがダイアログを閉じたことを知らせる起動コンポーネントを設定できます。レスポンスとして、ダイアログから呼び出しページへ値が渡され、読込
みや使用が可能です。
この項では、新規に作成したユーザーを表示するJSFページを作成します。新規ユー
ザーを作成するには、ダイアログにあるデータ入力フォームを起動するボタンを押します。ダイアログのリターン値はメッセージ文字列で、ユーザーを作成した
実際の日付および時刻が含まれています。
ダイアログ・
ウィンドウの作成
|
1.
|
Oracle JDeveloperで、「faces-config.xml」
タブをクリックして、ページ・フロー・ダイアグラムを開きます。
|
|
2.
|
Oracle JDeveloperのコンポーネント・パレット([Ctrl]
+[shift]+[P])で、「JSFナビゲーション・ケース」コンポーネントを選択し、Main.jspxペー
ジからDialog.jspxページへ線を引きます。
|
|
3.
|
ナビゲーション・リンクをsuccessからdialog:openに変更します。接頭辞
の"dialog:"をナビゲーション・ケースに使用すると、ADF Facesはこのページをダイアログに表示するものと解釈します。
|
| 4. |
Dialog.jspxアイコンをダブルクリックして、ページの設計エディタを開きま
す。
|
|
5.
|
Oracle JDeveloperのコンポーネント・パレットで、2つ目のSelectOneChoice(都
市)の下にInputTextFieldを追加して、次のプロパティを設定します。
| ラベル |
Zipcode |
| 値 |
#{userbean.zipcode} |
| 要求 |
false |
|
|
6.
|
resetボタンとsubmitボタンを作成するには、コンポーネント・パレットのPanelGroupコ
ンポーネントをPanelFormのfooter facetにドラッグします。
|
|
7.
|
コンポーネント・パレットで「ResetButton」と「CommandButton」
コンポーネントをpanelGroupに追加します。プロパティ・インスペクタで、resetボタンのテ
キスト・プロパティをResetに、送信ボタンのテキスト・プ
ロパティをSubmitに設定します。
|
|
8.
|
「Submit」ボタンを選択し、プロパティ・インスペクタのActionプ
ロパティを選択します。「 」ボタンをクリックして、マネージドBeanプロパティの値に「dialogbean」を選
択します。メソッド選択ボックスで「submitDialogAction」を選択します。
「OK」をクリックします。
|
リストへ戻る
ダイアログ・
ウィンドウに対するコールの構築
この項では、ダイアログ・ページを呼び出すアクションをメイン・ページに作成します。そして、
Main.jspxページを実行することで、スキニング機能からアプリケーションのルック・アンド・フィールを変更して試すことができます。
|
1.
|
Main.jspxファイルを、アプリケーション・ナビゲータのファイル・エントリ
か、もしくはfaces-config.xmlビジュアル・エディタでダブルクリックして開きます。
|
|
2.
|
「Create Customer」ボタンを選択してプロパティ・インスペクタを開
き、次のプロパティを設定します。
| プロパティ |
値 |
コメント |
| Action |
dialog:open |
ナビゲーションを開始してダイアログを表示する |
| PartialSubmit |
true |
ボタンをクリックした際にページを再ロードしないようにする |
| ID |
createUserButton |
このID名は、部分ページ・レンダリングでページをリフレッシュする際に
使用する |
| UseWindow |
true |
新規ウィンドウにダイアログを開く |
「ReturnListener」プロパティを選択し、「 」ボタンをクリックします。マ
ネージドBeanリストで、「dialogbean」を選択し、メソッド・フィールドで「returnFromProcess」
を選択します。
「OK」をクリックして、ダイアログを閉じます。
|
|
3.
|
構造ウィンドウで、af:panelPage要素を選択し、プロパティ・インスペクタ
を開きます。
|
|
4.
|
PartialTriggersプロパティを選択し、「 」ボタンをクリックします。
注:既存のスキン・セレクタ・エントリは、ページのルック・アンド・フィールを動的に
変更するために予め定義された部分トリガーのことで、スキニングと呼ばれる機能を示します。スキニング機能は、Main.jspxページを実行することで
確認できます。
|
|
5.
|
表示されているダイアログで「新規」ボタンをクリックします。新しいエントリを選択
し、ドロップダウン・リストから「createUserButton」を選択します。これによって、ボタンを押すとパ
ネル・ページがリフレッシュされます。
「OK」をクリックします。
|
|
6.
|
faces-config.xmlダイアグラムに移動し、Main.jspxア
イコンを選択します。
|
|
7.
|
アイコンを右クリックし、「実行」を選択してアプリケーションをテストします。
|
|
8.
|
メイン・ページがデフォルトのブラウザ上に開きます。
|
|
9.
|
スキン・セレクタ項目の横にあるドロップダウン・リストをクリックし、「OOW Skin」
値を選択します。ページがリフレッシュされ、OOWスタイル・シートを反映させた新しいUIが表示されます。
注:oow.cssスタイル・シートは、Web
コンテンツ → スキン・フォルダで定義されています。
|
|
10.
|
スキン・セレクタを元のOracleスキン値に戻すことができます。
「Create Customer 」ボタンをクリックして、ダイアログを呼び出し
ます。
|
|
11.
|
ダイアログ・ウィンドウのフォームに適切な値を入力します。
「Submit」をクリックします。
|
|
12.
|
メイン・ページにはダイアログ・ウィンドウで入力した値が反映され、ページの下には情報メッセージが表示されます。
|
|
13.
|
ブラウザ・ウィンドウを閉じます。
|
トピック・リストに戻る
ここでは、単一および複数の選択表コンポーネントについて学習します。また、プログラ
ムからダイアログを起動する方法も学習します。まず始めに、編集機能を使用して単一の選択表を作成します。次に、Table.jspxファイルを実行し
て、作業領域で既に定義された複数の選択表コンポーネントを使用します。
|
1.
|
faces-config.xmlエディタでTable.jspxア
イコンをダブルクリックして、ページを開きます。
|
|
2.
|
コンポーネント・パレットから「表」コンポーネントを「単一行選択」
タブにドラッグします。
|
| 3. |
表バインディング・ウィザードで、「次へ」をクリックして初期画面をスキップします。
手順1では、値フィールドの隣にある「バインド」ボタンをクリックします。式言語
ビルダーで「singleselectionhandler」→「tableModel」と選択し、「 」ボタンをクリックして式ペイ
ンに追加します。
「OK」をクリックします。
|
| 4. |
Varフィールドの値を「行」に設定します。
Data Type Hintフィールドの「Browse」
ボタンを押して、Customerと入力します。リストにあるパッケージのoracle.adffaces.handson.modelで、
「CustomerBean」クラスを選択します。
「OK」をクリックします。
Data Type Hintフィールドに、oracle.adffaces.handson.model.CustomerBeanが
表示されます。このヒントは、ウィザードが次のページで表示する表の列を決定する上で必要な情報です。
「次へ」をクリックします。
|
| 5. |
表ウィザードの手順2では、Selectedという列を削除して、次の順番で表示され
るように列を整理します。氏名、住所、電話番号、電
子メール、会社
「次へ」をクリックします。
|
|
6.
|
手順3では、ソートできるよう列に印を付けます。 ソート機能は、ADF
Faces表コンポーネントの統合機能です。各列を選択して、次の値を設定します。
| 列N |
ソート可能 |
ソートのプロパティ |
形式 |
| Full Name |
check |
fullname |
icon |
| Address |
check |
address |
icon |
| Phone |
check |
phone |
icon |
| Email |
check |
email |
icon |
| Company |
check |
company |
icon |
「次へ」をクリックします。
|
|
7.
|
手順4では、次の値を定義します。
| プロパティ |
値 |
コメント |
| Include Range Navigation |
5 |
リクエストごとに表に示される行の数を入力します。入力した数以上の行が
返された場合、表には次の行または前の行の一覧を取得するためのアクティブなナビゲーション・リンクが表示されます。行の総数が既知のものである場合、表
には特定の行の一覧に移動するためのリンクが表示されます。 |
| Include Selection Column |
"Single Selection"の選択 |
ユーザーが選択ファセットを使用して選択した行を現在の行に設定できるよ
う、左端の列を選択して挿入します。"Single
Selection"の選択は、ユーザーが1行のみ選択できるラジオ・ボタンを使用します。これでaf:tableSelectOneタグを選択ファセッ
トに挿入します。 |
| Include Table Banding |
行 |
背景色の変更バンドを選択して挿入します。これでaf:tableタグの
バンド属性が設定されます。行を選択すると、行の色を変更できます。 |
| Banding Interval |
1 |
|
表作成のダイアログを閉じます。
|
|
8.
|
ビジュアル・エディタで表を選択して(構造ペインでも選択可能)、プロパティ・インス
ペクタを開きます。バインディング・プロパティを選択して、「 」ボタンをクリックします。
|
|
9.
|
マネージドBeanフィールドで、「singleselectionhandler」
エントリを選択し、プロパティフィールドで「table1」を選択します。
「OK」をクリックして、ダイアログを閉じます。
|
|
10.
|
構造ペインでaf:tableコンポーネントを選択します。表ノー
ドを開いたら、Table facetsを開きます。
|
|
11.
|
コンポーネント・パレットからPanelButtonBarコンポーネントをドラッグ
して、Table facetsノード内のactionsファセットにドロップし
ます。
|
|
12.
|
コンポーネント・パレットからCommandButtonコンポーネントをドラッグし
て、PanelButtonBarにドロップします。
|
|
13.
|
「CommandButton 1」を選択して、プロパティ・インスペクタを開きま
す。テキスト・プロパティを編集に設定し、PartialSubmitプ
ロパティをtrueに設定します。
|
|
14.
|
「ActionListener」プロパティを選択して、「 」ボタンをクリックします。
ActionListenerダイアログで、ドロップダウン・リストから「tablebean」
をマネージドBeanとして選択します。メソッド・フィールドで「launchEditDialog」値を選択しま
す。
「OK」をクリックします。
|
|
15.
|
プロパティ・インスペクタで、CommandButton用に「ReturnListener」
プロパティを選択して、「 」ボタンをクリックします。マネージドBeanフィールドで「tablebean」エントリ
を選択します。processReturnFromEditをメソッドとして選択します。
「OK」をクリックします。
|
|
16.
|
「バインディング」プロパティを選択して、「 」ボタンをクリックします。マネージドBeanフィール
ドで「tablebean」エントリを選択します。プロパティ・フィールドで「commandButton1」
を選択します。
「OK」をクリックします。
|
|
17.
|
「実行」アイコン をクリックして、ブラウザに表ページを起動します。
「Edit Customer」ページで顧客を選択し、「編集」をク
リックします。
|
|
18.
|
Edit SingleTable
Rowページに、選択された顧客情報が表示されます。必要であれば、修正を行ってください。
「Submit」をクリックして表ページに戻ります。
|
|
19.
|
「Multi Row Select」リンクをクリックして、顧客を1つ以上選択したら「編
集」をクリックします。
|
|
20.
|
Selected Customersを1つ以上変更したら、「Commit」をク
リックして変更を確認します。
|
|
21.
|
更新した内容は、表ページに反映されます。
|
|
22.
|
ブラウザのウィンドウを閉じます。
|
トピック・リストに戻る
この項では、階層ツリー・コンポーネントとADF
Faces表コンポーネント間でマスター/ディテール関係を構築する方法を学習します。チュートリアルの作業領域では、基礎となるデータ・モデルは事前定
義されていますが、ツリーおよび表コンポーネントはこの項で構築します。
| 1. |
「faces-config.xml」ダイアグラムでTree.jspxア
イコンをダブルクリックし、ADF
Faces階層ツリー・コンポーネントを作成して既存のツリー・データ・モデルとバインドするためのページを開きます。
|
| 2. |
コンポーネント・パレットでツリー・コンポーネントを既存のPanelPageコ
ンポーネントへドラッグします。
|
| 3. |
開いたダイアログで、次の値を入力します。
| プロパティ |
値 |
| Value |
#{treehandler.treemodel} |
| Var |
node |
| ノード・スタンプ・コンポーネント |
af:outputText |
| ノード・スタンプ値 |
#{node.description} |
「OK」をクリックします。
|
| 4. |
コンポーネント・パレットでCommandLinkコンポーネントをドラッグし、af:outputTextコ
ンポーネントの隣にドロップします。この作業は、ビジュアル・エディタや構造ウィンドウでもできます。ツリー・ノードがdepartmentである場合に
限り、コマンド・リンクが表示されます。それ以外では、outputComponentが表示されます。ツリー・ノードのnodeTypeプ
ロパティで、ノードの種類を決定できます。
|
| 5. |
プロパティ・インスペクタを開き、CommandLinkのテキスト・プロパティを#{node.description}に
設定します。
|
| 6. |
Renderedプロパティの値を#{node.nodeType ==
"department"}に設定します。設定するには、Rendered
propertyフィールドをクリックして、プロパティ・インスペクタのツールバーにあるデータベース・アイコン をクリックして式言語ビルダーを開きます。式フィールドに式言語#
{node.nodeType == "department"}と入力します。
「OK」をクリックします。
|
| 7. |
コマンド・リンクをJSFアクションと接続するには、ActionListenerプ
ロパティを選択して「 」
ボタンをクリックします。
|
| 8. |
「treehandler」
をマネージドBeanプロパティとして選択します。「treeNodeSelected」
をメソッドとして選択します。
「OK」をクリックします。
|
| 9. |
af:outputTextコンポーネ
ントを選択し、プロパティ・インスペクタを開きます。
|
| 10. |
Renderedプロパティの値を#{node.nodeType !=
"department"}に設定します。設定するには、Rendered
propertyフィールドをクリックして、プロパティ・インスペクタのツールバーにあるデータベース・アイコン をクリックして式言語ビルダーを開きます。式フィールドに式言語#
{node.nodeType = "department"}と入力します。
「OK」をクリックします。
|
| 11. |
次に、ディテール表を構築します。マスター/ディテールの動作はマネージドBeanによって処理されます。コンポーネン
ト・パレットからPanelBoxコンポーネントをドラッグして、af:treeの
下にドロップします。
|
| 12. |
コンポーネント・パレットで「表」コンポーネントを選択し、PanelBox内
に挿入します。
|
| 13. |
「次へ」をクリックして表ウィザードの初期画面をスキップして、バインディング・ダイ
アログに次の値を入力します。
| プロパティ |
値 |
| Value |
#{treehandler.tableModel} |
| Var |
row |
| データ型ヒント |
oracle.adffaces.handson.model.EmployeeBean |
「次へ」をクリックします。
|
| 14. |
手順2では、表の列を次の順番に整理します。 電子名、電子メール、電
話、入社日、給与
「次へ」をクリックします。
|
| 15. |
手順3で「次へ」をクリックして、デフォルト設定のまま進めます。
|
| 16. |
手順4では、「Include Range Navigation」オプションを設定
し、行属性を5に設定します。
「終了」をクリックして、ダイアログを閉じます。
|
| 17. |
構造ウィンドウでaf:tableコンポーネントを選択し、プロパティ・インスペクタ
を開きます。
|
| 18. |
バインディング・プロパティを選択して「 」ボタンをクリックし、バインディング・ダイアログでマ
ネージドBeanとして「treehandler」
エントリを選択し、プロパティ・フィールドで「detailTable」
を選択します。
「OK」をクリックします。
|
| 19. |
アプリケーション・ナビゲータのTree.jspxノードを右クリックして、コンテキ
ストから「実行」を選択します。
|
| 20. |
Rootノードを開いたら、embeddedノードを開いてツリーの動作を確認します。
|
トピック・リストに戻る
このチュートリアルでは、Oracle ADF
Facesが提供する非常に複雑なユーザー・インタフェース・コンポーネントの一部と、オープンソースのTrinidadコンポーネントから次のものを使
用しました。
 |
部分ページ・レンダリング
|
 |
ADF Facesダイアログ・フレームワーク
|
 |
単一および複数の選択表
|
 |
ツリー・コンポーネント
|
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|