Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド 11gリリース1(11.1.1) B52029-02 |
|
![]() 戻る |
![]() 次へ |
この章では、値リスト・コンポーネントを使用して、ユーザーが値を選択できるオブジェクトのモデルドリブン・リストを表示する方法を説明します。
この章に含まれる項は次のとおりです。
ADF Facesには、各リスト項目の複数の属性を表示でき、ユーザーがオプションで必要な項目を検索できる値リスト(LOV)入力コンポーネントが2つあります。このLOVコンポーネントは、あるオブジェクトの属性の移入に使用されるフィールドが、実際はデータベースの外部キー関係のように他のオブジェクトのリスト内に含まれる場合に有用です。たとえば、ユーザーが従業員情報を編集できるフォームがあるとします。ユーザーがまず編集する従業員レコードを探す必要のある別のページを用意するかわりに、図11-1に示すように、その検索および選択機能をフォームに組み込むことができます。
このフォームにおいて、従業員名フィールドは従業員のリストが含まれるLOVです。ユーザーがinputListOfValues
コンポーネントの検索アイコンをクリックすると、図11-2に示すように、「検索および選択」ポップアップ・ダイアログに、ユーザーが従業員を検索できる検索フィールドとともにすべての従業員が表示されます。
ユーザーがページに戻ると、図11-3に示すように、その従業員の現在の情報がフォームに表示されます。ユーザーは、データを編集して保存できます。
selectOneChoice
など、その他のリスト・コンポーネントでも、ユーザーはリストから選択できますが、ポップアップ・ダイアログは含まれず、小規模なリストを対象としています。この章で説明するのは、inputListOfValues
およびinputComboboxListOfValues
LOVコンポーネントのみです。選択、リスト・ボックスおよびラジオ・ボタンの詳細は、第9章「入力コンポーネントの使用およびフォームの定義」を参照してください。
前述の図に示したように、inputListOfValues
コンポーネントを使用すると、ユーザーが項目を検索して選択できるポップアップ・ダイアログが提供されます。リストは表に表示されます。一方、inputComboboxListOfValues
コンポーネントでは、ユーザーは2つの異なる方法で入力する項目を選択できます。1つは単純なドロップダウン・リストで、もう1つはinputListOfValues
コンポーネントでできるのと同じ検索です。図11-4に、リストがinputComboboxListOfValues
コンポーネントによってどのように表示されるかを示します。
inputComboboxListOfValues
コンポーネントのドロップダウン・リストには、次の内容を表示できます。
完全なリスト: 図11-4に示したように、ListOfValuesModel.getItems()
メソッドにより項目の完全なリストが戻されます。
お気に入りリスト: ListOfValuesModel.getRecentItems()
メソッドにより、最近選択された項目のリストが戻されます。
検索リンク: ポップアップの「検索および選択」ダイアログが開かれるリンク。リンクは、ドロップダウン・リストのスクロール可能なリージョンにはありません。
customActions
ファセット: その他のコンテンツを追加するためのファセット。通常、1つ以上のcommandLink
コンポーネントが含まれます。ポップアップ・ダイアログの起動など、目的のアクションを実行するには、commandLink
にロジックを実装してください。
inputListOfValues
コンポーネントのポップアップ・ダイアログや、inputComboboxListOfValues
コンポーネントのオプションの検索ポップアップ・ダイアログにも、新規レコードを作成する機能があります。inputListOfValues
コンポーネントの場合、コンポーネントにcreatePopupId
属性が設定されていると、commandToolbarButton
を含むtoolbar
コンポーネントが作成アイコンとともに表示されます。図11-5に示すように、実行時に、LOVポップアップ・ダイアログにcommandToolbarButton
コンポーネントが表示されます。
ユーザーが「作成」ボタンをクリックすると、新規レコードの作成に使用できるポップアップ・ダイアログが表示されます。inputComboboxListOfValues
の場合は、ツールバーではなく、ダイアログ下部のcustomActions
ファセットに「作成」というラベルのcommandLink
が表示されます。このリンクにより、ユーザーが新規レコードを作成できるポップアップが起動されます。どちらの場合も、実際に新規レコードを作成するためのコードを入力する必要があります。
ヒント: 独自の作成機能を作成するかわりに、Oracle ADF Business ComponentsおよびADFデータ・バインディングを使用できます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「入力表の作成」を参照してください。 |
問合せコンポーネント同様、LOVコンポーネントもデータ・モデルに依存して機能を提供しています。このデータ・モデルはListOfValuesModel
クラスです。このモデルでは、値リストの表示に表モデルが使用され、問合せモデルにアクセスしてリストの検索を実行することも可能です。LOVコンポーネントを使用するには、指定されたインタフェースをListOfValuesModel
に実装する必要があります。
ヒント: 独自のListOfValuesModel クラスを作成するかわりに、Oracle ADF Business Componentsを使用して必要な機能を作成できます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「データバインドされた選択リストおよびシャトルの作成」を参照してください。 |
ユーザーがリストで項目を選択すると、データは選択された行のオブジェクトのリストとして戻されます。ここで各オブジェクトは選択された行のrowData
です。オブジェクトのリストは、選択が行われた後にキューイングされるReturnPopupEvent
イベントで使用できます。
QueryModel
クラスも実装する場合は、ユーザーが検索の実行やリストのフィルタ処理に使用できるQuery
コンポーネントがポップアップ・ダイアログに含まれます。LOVポップアップ・ダイアログでのQuery
コンポーネントの使用に関して、次の点に注意してください。
保存済検索機能はサポートされていません。
ポップアップ・ダイアログのQuery
コンポーネントとその機能は、対応するQueryDescriptor
クラスに基づいています。
LOVポップアップ・ダイアログに含めることのできるコンポーネントは、query
、toolbar
およびtable
のみです。
ユーザーが検索ボタンをクリックして検索を開始すると、ListOfValuesModel.performQuery()
メソッドが起動され、検索が実行されます。問合せモデルの詳細は、第12章「問合せコンポーネントの使用方法」を参照してください。
どちらのコンポーネントでも、オートコンプリート機能がサポートされているため、ユーザーが値の一部を入力フィールドに入力し、[Tab]を使用してフィールドから移動すると、条件の一部に一致する行がダイアログに移入されます。これを機能させるには、ユーザーが一部を入力した後に[Tab]を使用してフィールドから移動した場合に、入力した値がサーバーに戻されるロジックを実装する必要があります。サーバーでは、モデル実装により、部分的に入力された値を使用してリストがフィルタ処理され、値リストを取得する問合せが実行されます。ADF Facesには、この機能のためのAPIが用意されています。
LOVコンポーネントを使用するには、ADF FacesのAPIを使用してLOV機能にアクセスするデータ・モデルを作成する必要があります。図11-6に、ListOfValues
モデルのクラス図を示します。
ListOfValuesモデルおよび関連するイベントを作成する手順:
図11-6に示す各インタフェース・クラスの実装を作成します。表11-1にAPIを説明します。
表11-1 ListOfValuesモデルのAPI
メソッド | 機能 |
---|---|
|
コンポーネントで |
|
値が「検索および選択」ダイアログから選択されて、「OK」ボタンがクリックされた場合にコールされます。このメソッドにより、モデルは選択された値に基づいてモデルを更新できます。 |
|
オートコンプリートを有効化するかどうかを決定するためにブールが戻されます。 |
|
|
|
コンボボックス・ドロップダウンに表示する |
|
「検索および選択」ダイアログに作成される |
|
|
ListOfValues
モデルの例として、ADF FacesアプリケーションのApplication Sources
ディレクトリにある、oracle.adfdemo.view.lov
パッケージのDemoLOVBean
およびDemoComboboxLOVBean
クラスを参照してください。
inputListOfValues
コンポーネントの場合は、リストの移入に使用された属性にアクセスするマネージドBean(LOVモデルの作成に使用されたものと同じマネージドBeanでもかまいません)にロジックを指定します。inputComboboxListOfValues
コンポーネントでは、getItems()
およびgetRecentItems()
メソッドを使用してリストが戻されます。
InputListOfValues
コンポーネントに使用される「検索および選択」ポップアップ・ダイアログの場合、またはInputComboboxListOfValues
コンポーネントに「検索および選択」ポップアップ・ダイアログを使用する場合は、ListOfValuesModel.autoCompleteValue()
およびListOfValuesModel.valueSelected()
メソッドを実装します。これらのメソッドによりポップアップ・ダイアログが開かれ、コンポーネントに選択された値が適用されます。
inputListOfValues
コンポーネントでは、11.2項「ListOfValuesデータ・モデルの作成」に記載されているように、項目のリストにアクセスするために実装したListOfValues
モデルが使用されます。モデルに検索APIも実装すると、コンポーネントでは、ユーザーがリスト内の値を検索することもできるようになります。
inputListOfValuesコンポーネントを追加する手順:
コンポーネント・パレットからページに値リストの入力コンポーネントをドラッグ・アンド・ドロップします。
プロパティ・インスペクタで、「共通」セクションを開いて次の属性を設定します。
model
: 11.2項「ListOfValuesデータ・モデルの作成」で作成したように、ListOfValuesModel
実装に解決されるEL式を入力します。
value
: 11.2項「ListOfValuesデータ・モデルの作成」で作成したように、リストへの移入に使用された属性値に解決されるEL式を入力します。
「外観」セクションを開き、次の属性値を設定します。
popupTitle
: 「検索および選択」ポップアップ・ダイアログのタイトルを指定します。
searchDesc
: マウスが置かれた際にコンポーネントのヒントとして表示するテキストを入力します。
このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。
「動作」セクションを開き、次の属性値を設定します。
autoSubmit
: 該当するアクション(クリックやテキストの変更など)が実行された場合に、含まれているフォームがコンポーネントにより自動的に送信されるようにするにはtrue
に設定します。これにより、オートコンプリートが機能します。
createPopupId
: リストに新規オブジェクトを作成するために使用されたポップアップ・ダイアログを実装した場合は、そのポップアップ・コンポーネントのIDを指定します。これにより、定義したポップアップ・ダイアログにバインドされたcommandToolbarButton
コンポーネントを含む表の上にtoolbar
コンポーネントが表示されます。ポップアップにダイアログを追加した場合は、表をリフレッシュするタイミングが自動的に決定されます。ポップアップにダイアログを追加しなかった場合、表は常にリフレッシュされます。
launchPopupListener
: ポップアップの起動時に追加の機能を提供するために実装するlaunchPopupListener
に解決されるEL式を入力します。
returnPopupListener
: 値が戻された場合に追加の機能を提供するために実装するreturnPopupListener
コンポーネントに解決されるEL式を入力します。
このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。
ユーザーが新しい項目を作成できるようにする場合は、手順4で指定されたIDを使用してポップアップ・ダイアログを作成します。詳細は、第13章「ポップアップ・ダイアログ、メニューおよびウィンドウの使用方法」を参照してください。
inputComboboxListOfValues
コンポーネントを使用すると、ユーザーはドロップダウン・リストから値を選択し、inputListOfValues
コンポーネントと同じように、ページのLOVフィールドおよび可能な場合はその他のフィールドに移入できます。ただし、リストの値を完全なリストとして表示することや、最近参照した値ごとに表示することも可能になります。問合せAPIを実装していれば、11.2項「ListOfValuesデータ・モデルの作成」で説明されているように、ポップアップ・ダイアログで検索を実行するようにコンポーネントを構成することもできます。
inputComboboxListOfValuesコンポーネントを追加する手順:
コンポーネント・パレットからページにコンボボックス値リストの入力コンポーネントをドラッグ・アンド・ドロップします。
プロパティ・インスペクタで、「共通」セクションを開いて次の属性を設定します。
model
: 11.2項「ListOfValuesデータ・モデルの作成」で作成したように、ListOfValuesModel
実装に解決されるEL式を入力します。
value
: 11.2項「ListOfValuesデータ・モデルの作成」で作成したように、リストへの移入に使用された属性値に解決されるEL式を入力します。
「外観」セクションを開き、次の属性値を設定します。
popupTitle
: 「検索および選択」ポップアップ・ダイアログのタイトルを指定します。
searchDesc
: マウスが置かれた際にコンポーネントのヒントとして表示するテキストを入力します。
このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。
「動作」セクションを開き、次の属性値を設定します。
autoSubmit
: 該当するアクション(クリックやテキストの変更など)が実行された場合に、含まれているフォームがコンポーネントにより自動的に送信されるようにするにはtrue
に設定します。これにより、オートコンプリートが機能します。
createPopupId
: リストに新規オブジェクトを作成するために使用されたポップアップ・ダイアログを実装した場合は、そのポップアップ・コンポーネントのIDを指定します。これにより、定義したダイアログにバインドされたcommandToolbarButton
コンポーネントを含む表の上にtoolbar
コンポーネントが表示されます。ポップアップにダイアログを追加した場合は、表をリフレッシュするタイミングが自動的に決定されます。ポップアップにダイアログを追加しなかった場合、表は常にリフレッシュされます。
launchPopupListener
: ポップアップ・ダイアログが開かれる際に追加の機能を提供するために実装するlaunchPopupListener
ハンドラに解決されるEL式を入力します。
returnPopupListener
: 値が戻された場合に追加の機能を提供するために実装するreturnPopupListener
ハンドラに解決されるEL式を入力します。
このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。
ユーザーが新しい項目を作成できるようにする場合は、手順5で指定されたIDを使用してポップアップ・ダイアログを作成します。詳細は、第13章「ポップアップ・ダイアログ、メニューおよびウィンドウの使用方法」を参照してください。