query
およびquickQuery
検索パネル・コンポーネントの使用方法を説明します。query
コンポーネントを構成して検索基準を指定する方法、検索基準を動的に追加および削除する方法、および保存済検索を作成およびパーソナライズする方法を説明します。また、quickQuery
コンポーネントを構成してページに追加する方法も説明します。
この章の内容は次のとおりです。
ADF Facesには、アプリケーションで検索機能を実装できるqueryコンポーネントが用意されています。検索のパーソナライズと検索の保存が可能で、検索基準に対してquery
またはquickQuery
を実行できます。
query
およびquickQuery
コンポーネントは、データ・セットの検索に使用されます。query
コンポーネントには、一連の包括的な検索基準およびコントロールが用意されており、quick
Query
コンポーネントは、単一基準での検索に使用できます。
query
コンポーネントでは、次の機能がサポートされています。
複数の検索基準に対する選択および検索
基準アイテムの動的な追加および削除
単一基準に関連付けられている検索演算子の選択
すべてに一致またはいずれかに一致論理積の選択
基本または拡張モードでの表示
保存済検索の作成
保存済の検索のパーソナライズ
query
コンポーネントの拡張モードを使用すると、デフォルトで、ユーザーは現在表示されている検索に基準アイテムを追加および削除できるようになります。ただし、基本モードで特定の機能を非表示(および拡張モードでのみ表示)にできる独自のQueryModel
クラスを実装できます。たとえば、拡張モードでのみ演算子を表示することや、拡張モードでは基本モードより多くの基準を表示することができます。
通常、問合せの結果は表またはツリー表に表示され、query
コンポーネントのresultComponentId
属性を使用して識別されます。ただし、その他の出力コンポーネントに結果を表示することもできます。結果を表示するように構成されているコンポーネントは、検索が実行されると自動的にレンダリングされます。
図14-1に、検索条件が3つある拡張モードのquery
コンポーネントを示します。
基準がすでに決定されており、ユーザーがそこから選択できるシード済検索を作成することも、ユーザーが基準を追加してそれらの検索を保存できるようにすることも可能です。たとえば、例14-1に従業員のシード済検索を示します。ユーザーは、検索が実行される基準に値を入力できます。また、オペランド(次より大きい、次と等しい、次より小さい)や、論理積(ANDまたはOR問合せを作成する、すべてに一致またはいずれかに一致)も選択できます。ユーザーは「フィールドの追加」ドロップダウン・リストをクリックして1つ以上の基準を追加し、その検索を保存できます。アプリケーションが永続性を使用するように構成されている場合は、それらの検索基準を選択されたオペランドと論理積とともに保存し、指定された検索名を使用して再アクセスできます(永続性の詳細は、「JSFページでのユーザー・カスタマイズの許可」を参照してください)。
quickQuery
コンポーネントは、query
コンポーネントを簡略化したバージョンです。ユーザーは、ドロップダウン・リストから選択して、任意の検索可能属性の検索を実行できます。図14-2に、水平レイアウトのquickQuery
コンポーネントを示します。
query
およびquickQuery
コンポーネントのどちらでも、検索の定義および実行にQueryModel
クラスが使用されます。ユーザーが実行できるようにする特定の各検索に、関連するQueryModel
クラスを作成します。
ヒント
独自のQueryModel
実装を作成するかわりに、必要な機能を提供するADFビジネス・コンポーネントを使用できます。『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFのデータバインドされたチャートの作成に関する項を参照してください。
QueryModel
クラスは、一連の検索基準を定義するQueryDescriptor
オブジェクトを管理します。QueryModel
クラスでは、QueryDescriptor
オブジェクトの作成、削除および更新が行われます。QueryModel
クラスでは、シード済検索およびユーザーがパーソナライズした検索の両方の保存済検索も取得されます。詳細は、Java APIリファレンスfor Oracle ADF Facesを参照してください。
一連の検索基準アイテムのそれぞれにQueryDescriptor
クラスを作成する必要があります。QueryDescriptor
クラスでは、各シード済検索の作成に必要な基準および論理積へのアクセスが行われます。また、エンド・ユーザーのアクションに応じた、基準の動的な追加、削除、または追加と削除も実行されます。QueryDescriptor
クラスにも、モードや自動実行などの様々なUIヒントがあります。詳細は、Java APIリファレンスfor Oracle ADF Facesを参照してください。1つのQueryModel
クラスで、複数のQueryDescriptor
オブジェクトを管理できます。
ユーザーが新しい保存済検索を作成すると、その保存済検索用に新しいQueryDescriptor
オブジェクトが作成されます。ユーザーは、削除、選択、リセットおよび更新など、保存検索で様々な操作を実行できます。検索が実行または変更されると、適切なQueryModel
メソッドがコールされて正しいQueryDescriptor
オブジェクトが戻されるのみでなく、リクエスト値の適用フェーズ中にQueryOperationEvent
イベントがブロードキャストされます。このイベントは、JSFライフサイクルのアプリケーションの起動フェーズ中に、QueryOperationListener
ハンドラにより使用されます。QueryOperationEvent
イベントでは、QueryDescriptor
オブジェクトが引数として使用され、リスナーに渡されます。ADF Facesには、デフォルトでそのリスナーが実装されています。リスナーで実行される内容の詳細は、表14-2を参照してください。
たとえば、保存済検索の更新は、QueryModel
のupdate()
メソッドをコールすることで完了します。QueryOperationEvent
イベントがキューイングされ、更新操作に関連するモデル情報の変更処理を実行するQueryOperationListener
ハンドラによって使用されます。
QueryOperationEvent
イベントを生成する問合せ操作のアクションは、次のとおりです。
検索の保存
保存済検索の削除
基本モードおよび拡張モードの切替え
保存済検索のリセット
別の保存済検索の選択
保存済検索の更新
依存基準がある基準の値の更新
AttributeCriterion
クラスのhasDependentCriterion
メソッドは、基準に依存関係があるかどうかを確認するためにコールできます。デフォルトでは、このメソッドはfalse
を返しますが、基準に依存基準がある場合はtrue
を返します。その基準の値が変更されると、QueryOperationEvent
がJSFライフサイクルのモデル値の更新フェーズ用にキューイングされます。モデルには、モデルのルート基準に入力された値に基づき、依存基準の値を更新するためのリスナーが必要です。
問合せコンポーネントは、アプリケーションのニーズに対応するために様々なモードで使用できます。シード済検索で構成し、カスタマイズおよびパーソナライズ機能を提供できます。問合せコンポーネントは、エンタープライズ検索機能の実装に使用できる機能豊富なコンポーネントです。
問合せおよびクイック問合せコンポーネントを使用して、複雑なトランザクション検索フォームを作成できます。問合せコンポーネントはモデルドリブンであり、多くの機能および表示オプションを提供します。クイック問合せコンポーネントはフットプリントが小さく、1つの属性での標準検索を提供します。問合せコンポーネントはフットプリントがより大きくなりますが、複数条件の検索とその他の検索機能を提供します。
問合せコンポーネントを実装する前に、他のADF Faces機能を理解することが役立つ場合があります。また、ページに問合せまたはクイック問合せコンポーネントを追加した後で、検証やアクセシビリティなどの機能を追加することが必要になる場合があります。問合せコンポーネントで使用できる他の機能へのリンクを次に示します。
すべての問合せコンポーネントには、プロパティ値を設定または取得するために使用できるJavaScriptクライアントAPIがあります。「Oracle ADF Faces JavaScript APIリファレンス」を参照してください。
ヒントとメッセージを表示でき、問合せコンポーネントにオンライン・ヘルプを関連付けることができます。「ヒント、メッセージおよびヘルプの表示」を参照してください。
スキンを使用してコンポーネントの外観を変更できます。「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
問合せコンポーネントをアクセス可能にできます。「アクセス可能なADF Facesページの開発」を参照してください。
文字列を値として受け取る属性に値を入力するかわりに、プロパティ・ファイルを使用できます。これらのファイルにより、これらの文字列の翻訳を管理できます。「ページの国際化およびローカライズ」を参照してください。
アプリケーションでADFモデルを使用する場合は、自動的にバインドされる検索フォームを、データ・コントロールを使用して作成できます(ADFビジネス・コンポーネントに基づくか、その他のビジネス・サービスに基づくかを問いません)。『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたチャートの作成に関する項を参照してください。
ADFの問合せデータ・モデル(QueryModel)には、保存済みの検索を記述します。問合せデータ・モデルを作成してある場合にqueryコンポーネントを使用することも、問合せデータ・モデルを作成せずにマネージドBeanにロジックを追加することもできます。
query
コンポーネントを使用するには、まずQueryModel
クラスを作成する必要があります。問合せデータ・モデルの詳細は、Oracle ADF Faces Java APIリファレンスを参照してください。
ヒント
quickQuery
コンポーネントは、QueryModel
クラスを実装せずに使用できます。ただし、マネージドBeanにいくつかのロジックを追加する必要があります。「モデルなしでのquickQueryコンポーネントの使用方法」を参照してください。
問合せコンポーネントには、UIXQueryコンポーネントに対するrefresh()
メソッドがあります。このメソッドは、モデル定義が変更され、問合せコンポーネントをリフレッシュする必要がある場合(つまり、すべての子が削除されて再作成された場合など)にコールする必要があります。新しい基準をQueryDescriptor
に追加したか既存の基準を削除したときに、基礎となるモデルがコンポーネントのサブツリーで予期されるのとは異なる基準オブジェクトのコレクションを返す場合は、このメソッドをコールする必要があります。QueryOperationListener
、QueryListener
およびActionListener
は、すべてこのメソッドをコールする必要があります。問合せコンポーネント自体は、アプリケーションの起動フェーズの最後にフラッシュされます。このメソッドは、レスポンスのレンダリング・フェーズ中に呼び出された場合は実行されません。
実装での必要事項の理解に役立つように、表14-1および表14-2に、図14-3に表示されているUIコンポーネントの機能と対応するインタフェースとのマッピングを示します。
図14-3 問合せコンポーネントおよび関連するポップアップ・ダイアログ
表14-1に、query
コンポーネントにレンダリングされたUIアーティファクト、関連するクラス、クラス・プロパティ、およびアーティファクトが使用するメソッドを示します。
表14-1 問合せのUIアーティファクトおよび関連するモデル・クラスの操作とプロパティ
図の参照番号 | UIアーティファクト | 使用されるクラスのプロパティ/メソッド | コメント |
---|---|---|---|
1 |
「検索」パネル |
|
保存済検索に基づきます。 |
2 |
「公開」アイコン |
検索パネルを開閉します。 |
|
3 |
「一致」タイプ・ラジオ・ボタン |
|
問合せが実行されると、検索フィールド間に使用するデフォルトの論理積が表示されます。デフォルトが設定されていて、それがすべての検索フィールドで同一の場合、選択された状態で表示されます。検索フィールドが、フィールド間に異なる論理積を使用するように構成されている場合、UIで値は選択されません。 たとえば、
|
4 |
検索フィールドのグループ |
|
現在の選択された検索に関連付けられた1つ以上の検索フィールドが表示されます。 |
5 |
「検索」フィールド |
|
各検索フィールドには、ラベル、演算子、1つ以上の値コンポーネント(入力テキスト・コンポーネントなど)およびオプションの削除アイコンが含まれます。これらのレンダリングに必要な情報は、(保存済検索の)検索フィールドのインスタンスに固有の情報か、どの保存済検索に含まれているかに関係なく汎用的で不変な情報です。 たとえば、従業員ビジネス・オブジェクトに検索フィールドEmployee NameおよびSalaryが含まれるとします。 ユーザーは、Low Salaried EmployeeおよびHigh Salaried Employeesという名前の2つの異なる検索を構成できます。どちらの検索にも、 ユーザーが選択した検索に関係なく、Salaryの検索フィールドには数値コンポーネントがレンダリングされ、ラベルにはSalaryが表示されている必要があります。 |
6 |
「保存済の検索」ドロップダウン |
システム検索およびユーザーの保存済検索は、 |
使用可能なシステム検索およびユーザーの保存済検索のリストが表示されます。保存済の検索は、アルファベット順に示され、大文字と小文字は区別されません。
|
表14-2に、様々なUIアーティファクトの動作と、その動作を実行するために起動される関連するメソッドを示します。
表14-2 UIアーティファクトの動作および関連するメソッド
図の参照番号 | UIアーティファクト | 起動されるクラス・メソッド | 生成されるイベント | コメント |
---|---|---|---|---|
7 |
「削除」アイコン |
アプリケーションの起動フェーズ中に、コマンド・コンポーネントに登録されている内部の |
|
現在の |
8 |
「検索」ボタン |
JSFライフサイクルのリクエスト値の適用フェーズ中に モデル値の更新フェーズ中に、選択された演算子および検索フィールドに入力された値が、演算子および値コンポーネントに追加されたEL式を使用するモデルに自動的に更新されます(「queryコンポーネントの追加方法」を参照してください)。これらの式により、 アプリケーションの起動フェーズ中に、 このリスナーを実装する必要があります。 |
|
常にフッターにレンダリングされます( 選択された演算子と選択された「一致」ラジオ・ボタン、および各検索フィールドに入力された値を使用して、クエリが実行されます(選択が行われない場合はデフォルトが使用されます)。 |
9 |
「リセット」ボタン |
JSFライフサイクルのリクエスト値の適用フェーズ中に アプリケーションの起動フェーズ中に、 |
|
検索フィールドが、前に保存されていた状態にリセットされます。 |
10 |
「保存」ボタン |
JSFライフサイクルのリクエスト値の適用フェーズ中に アプリケーションの起動フェーズ中に、 |
|
ユーザーにより追加された新しい検索フィールドも含め、現在の保存済検索の設定に基づいて新しい保存済検索が作成されます。 |
11 |
「フィールドの追加」ドロップダウン・リスト |
アプリケーションの起動フェーズ中に、コマンド・コンポーネントに登録されている内部の |
|
既存の保存済検索に、検索フィールドとして属性が追加されます。 |
12 |
モード(「基本」または「拡張」)ボタン |
JSFライフサイクルのリクエスト値の適用フェーズ中に アプリケーションの起動フェーズ中に、 |
|
モード・ボタンをクリックすると、モードが切り替わります。 |
13 |
「削除」ボタン |
アプリケーションの起動フェーズ中に、 |
|
現在使用中でなければ、選択された保存済検索が削除されます。 |
14 |
「複製」ボタン |
JSFライフサイクルのリクエスト値の適用フェーズ中に、 アプリケーションの起動フェーズ中に、 |
|
選択されている保存済検索を複製します。 |
15 |
「適用」ボタン |
JSFライフサイクルのリクエスト値の適用フェーズ中に アプリケーションの起動フェーズ中に、 |
|
選択された保存済検索に行われた変更が適用されます。 |
16 |
「OK」ボタン |
「適用」ボタンと同じです。 |
|
選択された保存済検索に行われた変更が適用され、その後ダイアログが終了されます。 |
17 |
「取消」ボタン |
このアクションにはメソッドが定義されていません。 |
|
ダイアログ内で行われた編集が取り消されます。 |
18 |
「並替え」ボタン |
このアクションにはメソッドが定義されていません。 |
|
検索パネルの検索フィールドを並べ替えます。 |
操作を開始する前に:
問合せデータ・モデルに関する知識が役立つ場合があります。「問合せデータ・モデルの作成」を参照してください。
他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。「問合せコンポーネントの追加機能」を参照してください。
問合せモデル・クラスを作成する手順:
ADF Faces quickQuery
コンポーネントはquery
コンポーネントの簡易版で、1つのアイテム(条件)について検索できます。quickQuery
コンポーネントは、モデルの有無にかかわらず使用できます。
quickQuery
コンポーネントには、検索する属性をユーザーが選択できるドロップダウン・リストが1つ含まれています。使用できる検索可能属性は、モデルの実装またはマネージドBeanから導出されます。ユーザーは、選択した属性またはすべての属性を検索できます。
quickQuery
コンポーネントは、query
コンポーネントを使用した、より複雑な検索の開始点として使用できます。たとえば、ユーザーはある属性に対してクイック問合せ検索を実行し、成功した場合により複雑な検索に進むことができます。quickQuery
コンポーネントは、ユーザーがquickQuery
コンポーネントからquery
コンポーネントに切り替えられるようにするマネージドBeanのメソッドにバインドできるコマンド・コンポーネントをend
ファセットに配置できるようにすることで、これをサポートします。
quickQuery
コンポーネントはドロップダウン・リストに検索可能な基準をレンダリングし、実行時に選択された基準のタイプに応じて、quickQuery
コンポーネントは属性タイプに基づいて別の基準フィールドをレンダリングします。たとえば、属性タイプがNumber
の場合、inputNumberSpinbox
コンポーネントがレンダリングされます。問合せに完全なモデルを実装しているかぎり、これらのコンポーネントを追加する必要はありません。マネージドBeanにロジックが設定されていて、完全なモデルが必要ない場合は、手動でquickQuery
コンポーネント・アーティファクトを作成します。「モデルなしでのquickQueryコンポーネントの使用方法」を参照してください。
始める前に:
formおよびsubformに関する知識が役立つ場合があります。「quickQueryコンポーネントの使用方法」を参照してください。
他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。「問合せコンポーネントの追加機能」を参照してください。
次のタスクを完了する必要があります。
QueryModel
クラスおよび関連クラスを作成します。「問合せデータ・モデルの作成」を参照してください。quickQueryコンポーネントを追加する手順:
たとえば、すべての問合せロジックが検索を実行して結果を返すQueryListener
ハンドラなどの単純なマネージドBeanに存在する場合は、モデルなしでquickQuery
コンポーネントを使用できます。完全なquickQuery
コンポーネントの作成に必要なコンポーネントを手動で追加およびバインドする必要があります。
始める前に:
formおよびsubformに関する知識が役立つ場合があります。「quickQueryコンポーネントの使用方法」を参照してください。
他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。「問合せコンポーネントの追加機能」を参照してください。
quickQueryコンポーネントを追加する手順:
quickQuery
コンポーネントがQueryDescriptor
オブジェクトにバインドされている場合、selectOneChoice
およびinputText
コンポーネントは、実行時にページがレンダリングされる際に自動的に追加されます。ただし、独自のコンポーネントを追加することもできます。検索可能属性を表示するコンポーネントとinputText
コンポーネントの両方を追加する場合、コンポーネントから名前/値ペアを取得するにはQueryListener
ハンドラが必要です。
検索可能属性の表示に独自のコンポーネントのみを使用する場合(およびデフォルトの入力テキスト・コンポーネントを使用する場合)は、フレームワークにより入力テキスト・コンポーネントが表示されます。問合せを実行するには、QueryListener
ハンドラが、ドロップダウン・リストから属性名を、QueryDescriptor.getCurrentCriterion()
メソッドから値を取得するように設定する必要があります。
検索可能属性値の収集に独自のコンポーネントのみを使用する場合(および属性名の指定にデフォルトのselectOneChoice
コンポーネントを使用する場合)は、フレームワークによりselectOneChoice
コンポーネントが表示されます。QueryListener
ハンドラが、QueryDescriptor.getCurrentCriterion()
メソッドから属性名を、コンポーネントから値を取得するように設定する必要があります。
Quick
Query
コンポーネントのvalue
属性をQueryDescriptor
オブジェクトにバインドせず、両方のコンポーネントを使用することを選択した場合、「移動」ボタンがクリックされると、フレームワークによりQueryDescriptor
オブジェクトのないQueryEvent
イベントがキューイングされます。その後、指定されたQueryListener
ハンドラにより、名前へのアクセスにchangeValueListener
ハンドラが使用され、値へのアクセスに入力コンポーネントが使用されて問合せが実行されます。selectOneChoice
コンポーネントから属性名を取得し、inputText
コンポーネントから属性値を取得して問合せを実行するには、QueryListener
ハンドラを実装する必要があります。
ADF Faces query
コンポーネントは、フル検索機能またはクイック問合せ検索を実行する際に使用します。WHERE、ANDまたはOR句を使用して、検索基準を結合することもできます。
query
コンポーネントは、フル機能検索に使用されます。基本および拡張モードがあり、ユーザーはボタンをクリックすることで切替えできます。
基本モード問合せの機能は次のとおりです。
選択可能な検索条件演算子のドロップダウン・リスト
AND
またはOR
(すべて一致または一部一致)とともに使用する選択可能なWHERE
句
保存済(シード済)検索
パーソナライズされた保存済検索
拡張モードの問合せフォームにも、検索可能属性のリストから選択することで、ユーザーが動的に検索条件を追加できる機能があります。ユーザーは、追加された任意の条件を後から削除できます。
ユーザーは、演算子のドロップダウン・リストから選択して、検索用に問合せを作成できます。入力フィールドは、値リスト(LOV)、数値スピナー、日付チューザ、あるいはその他の入力コンポーネントとして構成されます。
注意:
検索パネルのすべての演算子ドロップダウン・フィールドに対して均一の幅が必要な場合、次のスキニング・プロパティを設定できます。
af|query { -tr-operator-size: constant; }
演算子フィールドの幅を均一にすると、すべての検索フィールドの演算子および検索ボックスが垂直方向に整列され、外観が整理されます。
スキンの一般的な概要は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
リストの複数項目の選択をサポートするには、モデルでviewCriteriaItem
にコントロール・ヒントを表示し、基礎となる属性を、対応する表示オブジェクト内のLOVとして定義する必要があります。ヒントは、複数選択またはin演算子機能を有効または無効にするために使用されます。複数選択が有効になっている場合に、Equals
またはDoes not equal
演算子を選択すると、検索基準フィールドがselectManyChoice
コンポーネントとしてレンダリングされます。ユーザーは、リストから複数の項目を選択できます。
検索基準フィールドのコンポーネントは、基礎となる属性のデータ型、選択されている演算子、および複数選択が有効になっているかどうかによって異なります。たとえば、Contains
演算子が選択されているString
型の属性の検索フィールドは、表14-3に示されているように、inputText
コンポーネントとしてレンダリングされます。
演算子がEquals
またはDoes not equal
であり、複数選択が有効になっていない場合、コンポーネントは、モデルの「デフォルトのリスト・タイプ」ヒントで指定されているコンポーネントにデフォルトで設定されます。
表14-3 String型の検索基準フィールドのレンダリング済コンポーネント
演算子 | コンポーネント | 複数選択が有効な場合のコンポーネント |
---|---|---|
|
|
|
|
|
|
|
デフォルトのリスト・タイプ・ヒント |
|
|
デフォルトのリスト・タイプ・ヒント |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なし |
なし |
|
なし |
なし |
基礎となる属性がNumber
データ型の場合にレンダリングされるコンポーネントを、表14-4に示します。
表14-4 Number型の検索基準フィールドのレンダリング済コンポーネント
演算子 | コンポーネント | 複数選択が有効な場合のコンポーネント |
---|---|---|
|
デフォルトのリスト・タイプ・ヒント |
|
|
デフォルトのリスト・タイプ・ヒント |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なし |
なし |
|
なし |
なし |
基礎となる属性がDate
データ型の場合にレンダリングされるコンポーネントを表14-5に示します。
表14-5 Date型の検索基準フィールドのレンダリング済コンポーネント
演算子 | コンポーネント | 複数選択が有効な場合のコンポーネント |
---|---|---|
|
デフォルトのリスト・タイプ・ヒント |
|
次と等しくない |
デフォルトのリスト・タイプ・ヒント |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なし |
なし |
|
なし |
なし |
検索基準の基礎となる属性がLOVとして定義されている場合、オートコンプリート機能を有効にするには、AttributeCriterion
クラスのgetModelList
メソッドから返されるListOfValues
モデル・インスタンスで、そのisAutoCompleteEnabled
メソッドに対してtrue
を返す必要があります。LOVの詳細は、 「値リスト・コンポーネントの使用方法」を参照してください。
autoSubmit
がtrue
に設定されている場合、検索基準での値の変更は、すぐにモデルにプッシュされます。queryコンポーネントは、依存基準がある場合のみ、その基準リストを自動的にフラッシュします。基準インスタンスに依存基準がなく、autoSubmit
がtrue
に設定されている場合、queryコンポーネントは部分的にのみリフレッシュされます。
「すべてに一致」または「いずれかに一致」ラジオ・ボタン・グループで、問合せをさらに変更できます。「すべてに一致」を選択すると、基本的にAND
関数になります。問合せでは、選択した条件にすべて一致する行のみが返されます。「いずれかに一致」を選択すると、OR
関数になります。問合せでは、基準アイテムのいずれか1つに一致するすべての行が返されます。
すべての検索基準の値(null値を含む)を入力して「すべてに一致」または「いずれかに一致」ラジオ・ボタンを選択した後、ユーザーは「検索」ボタンをクリックして問合せを開始できます。問合せ結果は、出力コンポーネントに表示できます。通常、出力コンポーネントは表またはツリー表ですが、resultComponentId
属性に指定することで、af:forms
、af:outputText
および図形など、その他の表示コンポーネントを結果コンポーネントとして関連付けることができます。
「基本」または「拡張」ボタンが有効化および表示されている場合、ユーザーは2つのモードを切り替えられます。各モードでは、そのモードに定義された検索条件のみが表示されます。検索条件フィールドは、基本のみ、拡張のみ、または両方のモードで表示されるように定義できます。
拡張モードでは、コントロール・パネルにも、検索可能属性のポップアップ・リストを表示する「フィールドの追加」ボタンが含まれます。ユーザーがこれらの属性のいずれかを選択すると、動的に生成された検索条件の入力フィールドおよびドロップダウンの演算子のリストが表示されます。すべての検索条件入力フィールドおよび新しく追加されたフィールドの位置は、モデル実装により決定されます。
この新しく作成された検索条件フィールドでも、隣に削除アイコンが表示されます。ユーザーは、後からこのアイコンをクリックして、追加したフィールドを削除できます。初めから定義されていた検索条件フィールドは、削除アイコンがないため、ユーザーが削除することはできません。図14-5に、「Salary」という名前の動的に追加された検索基準フィールドがある拡張モードのquery
コンポーネントを示します。フィールドの隣にある削除アイコン(X)に注目してください。
図14-5 動的に追加された検索規準のある拡張モードの問合せ
ユーザーは、「保存」ボタンをクリックして、入力された検索条件およびモードを保存することもできます。ポップアップ・ダイアログでは、ユーザーは保存済検索に名前を付け、チェック・ボックスを選択してヒントを指定できます。セッションを超えて保存済検索を使用可能にする場合は、永続データ・ストアが必要です。永続性の詳細は、「JSFページでのユーザー・カスタマイズの許可」を参照してください。
シード済検索は、基本的に、アプリケーション開発者によって作成された保存済検索です。コンポーネントを初期化すると、ユーザーは、そのquery
コンポーネントに関連付けられているシード済検索を選択できるようになります。
ユーザーが作成した保存済検索およびシード済システム検索は、「保存済の検索」ドロップダウン・リストに表示されます。シード済検索とユーザーの保存済検索は、仕切線によって区切られます。これらはアルファベット順にソートされ、大文字と小文字は区別されます。
保存済検索およびシード済検索を今後の使用に備えてパーソナライズすることもできます。保存済検索のパーソナライズには、永続データ・ストア機能が必要です。永続性の詳細は、「JSFページでのユーザー・カスタマイズの許可」を参照してください。
前述のデフォルトの表示の他に、コンパクト・モードまたは簡易モードで表示するようにquery
コンポーネントを構成することもできます。コンパクト・モードにはヘッダーや境界がなく、「保存済の検索」ドロップダウン・リストが開くアイコンまたは閉じるアイコンの隣に移動します。図14-6に示すquery
コンポーネントは図14-5のものと同じですが、コンパクト・モードに設定されています。
図14-6 コンパクト・モードのqueryコンポーネント
簡易モードでは、ヘッダーおよびフッターがなく、通常その領域に表示されるボタンもないコンポーネントが表示されます。図14-7に、簡易モードに設定された同じquery
コンポーネントを示します。
図14-7 簡易モードのqueryコンポーネント
query
コンポーネントではtoolbar
ファセットおよびfooter
ファセットがサポートされており、ボタンなどのコンポーネントを問合せに追加できます。たとえば、quickQuery
およびquery
コンポーネントを切り替えるコマンド・コンポーネントを作成し、それらをtoolbar
ファセットのツールバーに配置できます。
query
コンポーネントはそのサブコンポーネント(入力フィールド、選択リスト、ボタンなど)のレンダリングを行うため、inlineStyle
は問合せとともに使用できません。inlineStyle
を使用すると、予期しない表示動作が発生することがあります。
始める前に:
formおよびsubformに関する知識が役立つ場合があります。「問合せコンポーネントの使用方法」を参照してください。
他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。「問合せコンポーネントの追加機能」を参照してください。
次のタスクを完了する必要があります。
QueryModel
クラスおよび関連クラスを作成します。「問合せデータ・モデルの作成」を参照してください。queryコンポーネントを追加する手順: