ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド
11gリリース1(11.1.1.9.0)
B52029-12
  目次へ移動
目次

前
 
次
 

11 値リスト・コンポーネントの使用方法

この章では、値リスト・コンポーネントを使用して、ユーザーが値を選択できるオブジェクトのモデルドリブン・リストを表示する方法を説明します。

この章では、次の項目について説明します。

11.1 値リスト・コンポーネントの概要

ADF Facesには、各リスト項目の複数の属性を表示でき、ユーザーがオプションで必要な項目を検索できる値リスト(LOV)入力コンポーネントが2つあります。このLOVコンポーネントは、あるオブジェクトの属性の移入に使用されるフィールドが、実際はデータベースの外部キー関係のように他のオブジェクトのリスト内に含まれる場合に有用です。たとえば、ユーザーが従業員情報を編集できるフォームがあるとします。ユーザーがまず編集する従業員レコードを探す必要のある別のページを用意するかわりに、図11-1に示すように、その検索および選択機能をフォームに組み込むことができます。

図11-1 値リスト入力フィールド

InputListOfValuesコンポーネント

このフォームにおいて、従業員名フィールドは従業員のリストが含まれるLOVです。ユーザーがinputListOfValuesコンポーネントの検索アイコンをクリックすると、図11-2に示すように、「検索および選択」ダイアログに、ユーザーが従業員を検索できる検索フィールドとともにすべての従業員が表示されます。

図11-2 値リスト・コンポーネントの「検索」ポップアップ・ダイアログ

値リスト・コンポーネントの「検索」ポップアップ

ユーザーがページに戻ると、図11-3に示すように、その従業員の現在の情報がフォームに表示されます。ユーザーは、データを編集して保存できます。

図11-3 LOVコンポーネントを使用して移入されたフォーム

LOVコンポーネントにより移入されたフォーム

selectOneChoiceなど、その他のリスト・コンポーネントでも、ユーザーはリストから選択できますが、ポップアップ・ダイアログは含まれず、小規模なリストを対象としています。この章で説明するのは、inputListOfValuesおよびinputComboboxListOfValues LOVコンポーネントのみです。選択コンポーネント、リスト・ボックス・コンポーネントおよびラジオ・ボタンの詳細は、第9章「入力コンポーネントの使用およびフォームの定義」を参照してください。

前の図に示したように、inputListOfValuesコンポーネントはユーザーが項目を検索および選択できるポップアップ・ダイアログを表示します。リストは表に表示されます。対照的に、inputComboboxListOfValuesコンポーネントでは、ユーザーは、単純なドロップダウン・リストから選択するか、inputListOfValuesコンポーネントの場合のように検索するという2つの異なる方法で項目を選択できます。

searchContentファセットを使用して、「検索および選択」ダイアログにレンダリングするカスタム・コンテンツを作成することもできます。returnPopupDataValue属性を定義し、ユーザーが「検索および選択」ダイアログから項目を選択してダイアログを閉じたときにプログラムでこの属性に値を設定します。この値は、ReturnPopupEventからreturnPopupListenerの戻り値になります。returnPopupListenerを実装すると、LOVコンポーネント、その依存コンポーネントの値の設定、カスタム・コンテンツの表示などの関数を実行できます。searchContentファセットでは、表、ツリー、inputTextなどのコンポーネントを追加して、カスタム・コンテンツを表示できます。

searchContentファセットとListOfValuesモデルの両方を実装する場合、searchContentファセットの実装は「検索および選択」ダイアログのレンダリングよりも優先されます。例11-1に、表コンポーネントを使用してカスタム・コンテンツを表示するためのコードを示します。

例11-1 「検索および選択」ダイアログへのカスタム・コンテンツの追加

<af:inputListOfValues model="#{bean.listOfValuesModel}"
...
              returnPopupDataValue="#{bean.returnPopupDataValue}"
              returnPopupListener="#{bean.returnPopupListener}">
   <f:facet name="searchContent"> 
      <af:table id="t1" value="#{bean.listModel}" var="row" 
      selectionListener="#{bean.selected}"
      ...
   </f:facet>
</af:inputListOfValues> 

readOnly属性がtrueに設定されている場合、入力フィールドは無効になります。readOnlyfalseに設定されている場合、editMode属性は許可される入力のタイプを決定します。editModeselectに設定されている場合、値はリストから選択することでのみ入力できます。editModeinputに設定されている場合、値は入力することもできます。

ユーザーが部分的な値を入力したときに提案される項目のリストを自動的に表示するようにLOVコンポーネントを実装することもできます。たとえば、ユーザーがCaと入力した場合、図11-4に示すように、Caに部分的に一致する提案リストが提案される項目リストとして表示されます。

図11-4 LOVの提案される項目リスト

提案される項目リスト。

図11-5に示すように、ユーザーは、このリストから項目を選択して入力フィールドに入力できます。

図11-5 選択された提案項目

選択された提案項目。

af:autoSuggestBehaviorタグをLOVコンポーネント内部に追加し、タグのsuggestItems値を、リストを取得して表示するメソッドに設定して、自動提案動作を追加します。このメソッドはマネージドBeanに作成できます。ADFモデルを使用している場合、メソッドはデフォルトで実装されます。

LOVモデル実装で、リストをさらにフィルタ処理するスマート・リストを実装できます。両方のLOVコンポーネントのスマート・リストを実装できます。ADFモデルを使用している場合、inputComboboxListOfValuesでは、そのLOVの表示基準として定義されたスマート・リスト・フィルタを宣言的に選択できます。スマート・リストが実装されており、自動提案動作も使用されている場合、自動提案ではスマート・リストから最初に検索されます。ユーザーが何もせずに2秒待機すると、自動提案は完全なリストからも検索して結果を追加します。maxSuggestedItems属性は、返す項目の数を指定します(-1は完全なリストを示します)。maxSuggestedItems > 0の場合は、ユーザーがクリックしてLOVの「検索および選択」ダイアログを起動できる「次へ」リンクがレンダリングされます。例11-2に、自動提案動作およびスマート・リストの両方を含むLOVコンポーネントのコードを示します。

例11-2 自動提案動作およびスマート・リスト

<af:autoSuggestBehavior 
    suggestItems="#{bean.suggestItems}" 
    smartList="#{bean.smartList}"
    maxSuggestedItems="7"/>

図11-6に、inputComboboxListOfValuesコンポーネントでリストを表示する方法を示します。ポップアップ・ダイアログに問合せパネルが含まれる場合は、ドロップダウン・リストの下部に「検索」リンクが表示されます。問合せパネルが使用されない場合は、「次へ」リンクが表示されます。

図11-6 従業員名のリストが表示されたinputComboboxListOfValues

inputComboboxListOfValuesによりリストが表示される

contentDelivery属性を使用して、ドロップダウン・リストのコンテンツが送信され、クライアントにレンダリングされるタイミングを制御します。即時配信に設定すると、リストのコンテンツは初期リクエスト時にフェッチされます。遅延配信では、ページでは最初は標準のライフサイクルが実行されます。ただし、その初期リクエスト時にリスト・コンテンツをフェッチするかわりに、特殊な部分ページ・レンダリング(PPR)リクエストが実行され、リスト・コンテンツが戻されます。コンテンツを表示してからキャッシュに維持するという最初のリクエストまで、コンテンツがクライアントに対してレンダリングされないようにリストを構成できます(lazy)。また、コンテンツを開くリクエストがあるたびにコンテンツがレンダリングされるように構成することもでき(lazyUncached)、これがデフォルトです。

contentDelivery属性の設定方法は、LaunchPopupEventがキューに入るタイミングに影響を与えます。contentDeliverylazyUncachedに設定されると、このイベントはドロップダウン・パネルの表示中にキューに入ります。contentDeliveryがlazyに設定されると、イベントはドロップダウンが初めて表示されるときにのみキューに入ります。immediateに設定されると、LaunchPopupEventがキューに入ることはありません。

inputComboboxListOfValuesコンポーネントのドロップダウン・リストには、次の内容を表示できます。

  • 完全なリスト: 図11-6に示したように、ListOfValuesModel.getItems()メソッドにより項目の完全なリストが戻されます。

  • お気に入りリスト: ListOfValuesModel.getRecentItems()メソッドにより、最近選択された項目のリストが戻されます。

  • 検索リンク: ポップアップの「検索および選択」ダイアログが開かれるリンク。リンクは、ドロップダウン・リストのスクロール可能なリージョンにはありません。

  • customActionsファセット: その他のコンテンツを追加するためのファセット。通常、1つ以上のcommandLinkコンポーネントが含まれます。ポップアップ・ダイアログの起動など、目的のアクションを実行するには、commandLinkにロジックを実装してください。

各行に表示される列数は、getItemDescriptors()メソッドを使用してモデルから取得できます。デフォルトではすべての列が表示されます。

inputListOfValuesコンポーネントのポップアップ・ダイアログや、inputComboboxListOfValuesコンポーネントのオプションの検索ポップアップ・ダイアログにも、新規レコードを作成する機能があります。inputListOfValuesコンポーネントの場合、コンポーネントにcreatePopupId属性が設定されていると、commandToolbarButtonを含むtoolbarコンポーネントが作成アイコンとともに表示されます。図11-7に示すように、実行時に、LOVポップアップ・ダイアログにcommandToolbarButtonコンポーネントが表示されます。

図11-7 ポップアップ・ダイアログのツールバーにある作成アイコン

ポップアップのツールバーにある作成アイコン

ユーザーが「作成」ボタンをクリックすると、新規レコードの作成に使用できるポップアップ・ダイアログが表示されます。inputComboboxListOfValuesの場合は、ツールバーではなく、ダイアログ下部のcustomActionsファセットに「作成」というラベルのcommandLinkが表示されます。このリンクにより、ユーザーが新規レコードを作成できるポップアップが起動されます。どちらの場合も、実際に新規レコードを作成するためのコードを入力する必要があります。


ヒント:

独自の作成機能を作成するかわりに、ADFビジネス・コンポーネントおよびADFデータ・バインディングを使用できます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「入力表の作成」を参照してください。

問合せコンポーネント同様、LOVコンポーネントもデータ・モデルに依存して機能を提供しています。このデータ・モデルはListOfValuesModelクラスです。このモデルでは、値リストの表示に表モデルが使用され、問合せモデルにアクセスしてリストの検索を実行することも可能です。LOVコンポーネントを使用するには、指定されたインタフェースをListOfValuesModelに実装する必要があります。


ヒント:

独自のListOfValuesModelクラスを作成するかわりに、ADFビジネス・コンポーネントを使用して必要な機能を作成できます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「データバインドされた選択リストおよびシャトルの作成」を参照してください。

ユーザーがリストで項目を選択すると、データは選択された行のオブジェクト(ここでは各オブジェクトは選択した行のrowData)のリストとして返されます。オブジェクトのリストは、選択された後でキューに入れられるReturnPopupEventイベントで入手できます。

QueryModelクラスも実装する場合は、ユーザーが検索の実行やリストのフィルタ処理に使用できるQueryコンポーネントがポップアップ・ダイアログに含まれます。LOVポップアップ・ダイアログでのQueryコンポーネントの使用に関して、次の点に注意してください。

  • 保存済検索機能はサポートされていません。

  • ポップアップ・ダイアログのQueryコンポーネントとその機能は、対応するQueryDescriptorクラスに基づいています。

  • LOVポップアップ・ダイアログに含めることのできるコンポーネントは、querytoolbarおよびtableのみです。

ユーザーが「検索」ボタンをクリックして検索を開始すると、ListOfValuesModel.performQuery()メソッドが起動され、検索が実行されます。問合せモデルの詳細は、第12章「問合せコンポーネントの使用方法」を参照してください。

どちらのコンポーネントでも、オートコンプリート機能がサポートされているため、ユーザーが値の一部を入力フィールドに入力し、[Tab]を使用してフィールドから移動すると、条件の一部に一致する行がダイアログに移入されます。これを機能させるには、ユーザーが一部を入力した後に[Tab]を使用してフィールドから移動した場合に、入力した値がサーバーに戻されるロジックを実装する必要があります。サーバーでは、モデル実装により、部分的に入力された値を使用してリストがフィルタ処理され、値リストを取得する問合せが実行されます。ADF Facesには、この機能のためのAPIが用意されています。

11.2 ListOfValuesデータ・モデルの作成

LOVコンポーネントを使用するには、ADF FacesのAPIを使用してLOV機能にアクセスするデータ・モデルが必要です。図11-8に、ListOfValuesモデルのクラス図を示します。

図11-8 ListOfValuesモデルのクラス図

ListOfValuesモデルのクラス図

11.2.1 ListOfValuesデータ・モデルの作成方法

ListOfValuesモデルおよび関連するイベントを作成する手順:

  1. 図11-8に示す各インタフェース・クラスの実装を作成します。表11-1にAPIを説明します。

    表11-1 ListOfValuesモデルのAPI

    メソッド 機能

    autoCompleteValue()

    コンポーネントでautoSubmittrueに設定されている場合、検索アイコンがクリックされるか、値が変更されてユーザーが[Tab]を使用して入力フィールドから移動するとコールされます。このメソッドにより、ダイアログを開くか、値をオートコンプリートするかが決定されます。このメソッドにより、フィルタ処理されたオブジェクトのリストが戻されます。

    valueSelected(value)

    値が「検索および選択」ダイアログから選択されて、「OK」ボタンがクリックされた場合にコールされます。このメソッドにより、モデルは選択された値に基づいてモデルを更新できます。

    isAutoCompleteEnabled()

    オートコンプリートを有効化するかどうかを決定するためにブールが戻されます。

    getTableModel()

    TableModelクラスの実装が戻されます。「検索および選択」ダイアログの表は、これに基づいて作成されます。

    getItems()およびgetRecentItems()

    コンボボックス・ドロップダウンに表示するitemsおよびrecentItemsリストが戻されます。inputComboboxListOfValuesコンポーネントでのみ有効です。inputListOfValuesコンポーネントにはnullが戻されます。

    getItemDescriptors()

    inputComboboxListOfValuesコンポーネントのドロップダウン・リストに表示するcolumnDescriptorsのリストを返します。

    getQueryModel()およびgetQueryDescriptor()

    「検索および選択」ダイアログに作成されるqueryコンポーネントに基づいてqueryModelが戻されます。

    performQuery()

    queryコンポーネントの検索ボタンがクリックされるとコールされます。


    ListOfValuesモデルの例として、ADF FacesアプリケーションのApplication Sourcesディレクトリにある、oracle.adfdemo.view.lovパッケージのDemoLOVBeanおよびDemoComboboxLOVBeanクラスを参照してください。

  2. inputListOfValuesコンポーネントの場合は、リストの移入に使用された属性にアクセスするマネージドBean (LOVモデルの作成に使用されたものと同じマネージドBeanでもかまいません)にロジックを指定します。inputComboboxListOfValuesコンポーネントでは、getItems()およびgetRecentItems()メソッドを使用してリストが戻されます。

  3. InputListOfValuesコンポーネントに使用される「検索および選択」ダイアログの場合、またはInputComboboxListOfValuesコンポーネントに「検索および選択」ダイアログを使用する場合は、ListOfValuesModel.autoCompleteValue()およびListOfValuesModel.valueSelected()メソッドを実装します。これらのメソッドによりポップアップ・ダイアログが開かれ、コンポーネントに選択された値が適用されます。

11.3 inputListOfValuesコンポーネントの使用方法

inputListOfValuesコンポーネントでは、11.2項「ListOfValuesデータ・モデルの作成」に記載されているように、項目のリストにアクセスするために実装したListOfValuesモデルが使用されます。

11.3.1 InputListOfValuesコンポーネントの追加方法

始める前に:

ページまたはページ・フラグメントをすでに作成している必要があります。モデルに検索APIも実装すると、コンポーネントでは、ユーザーがリスト内の値を検索することもできるようになります。

inputListOfValuesコンポーネントを追加する手順:

  1. コンポーネント・パレットの「共通」パネルから、ページに「入力値リスト」コンポーネントをドラッグ・アンド・ドロップします。

  2. プロパティ・インスペクタで、「共通」セクションを開いて次の属性を設定します。

  3. 「外観」セクションを開き、次の属性値を設定します。

    • popupTitle: 「検索および選択」ポップアップ・ダイアログのタイトルを指定します。

    • searchDesc: マウスが置かれた際にコンポーネントのヒントとして表示するテキストを入力します。

    • Placeholder: inputListOfValuesコンポーネントが空でフォーカスが設定されていない場合に、コンポーネントに表示されるテキストを指定します。コンポーネントにフォーカスが設定されるか、値が入力されると、プレースホルダ・テキストは非表示になります。

      プレースホルダ・テキストは、ユーザーがinputListOfValuesコンポーネントに入力する必要のある内容を知らせる目的で使用されます。


      注意:

      プレースホルダ値はHTML5を完全にサポートするブラウザでのみ動作します。

    このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。

  4. 「動作」セクションを開き、次の属性値を設定します。

    • autoSubmit: 該当するアクション(クリックやテキストの変更など)が実行された場合に、含まれているフォームがコンポーネントにより自動的に送信されるようにするにはtrueに設定します。これにより、オートコンプリートが機能します。

    • createPopupId: リストに新規オブジェクトを作成するために使用されたポップアップ・ダイアログを実装した場合は、そのポップアップ・コンポーネントのIDを指定します。これにより、定義したポップアップ・ダイアログにバインドされたcommandToolbarButtonコンポーネントを含む表の上にtoolbarコンポーネントが表示されます。ポップアップにダイアログを追加した場合は、表をリフレッシュするタイミングが自動的に決定されます。ポップアップにダイアログを追加しなかった場合、表は常にリフレッシュされます。

    • launchPopupListener: ポップアップの起動時に追加の機能を提供するために実装するlaunchPopupListenerに解決されるEL式を入力します。

    • returnPopupListener: 値が戻された場合に追加の機能を提供するために実装するreturnPopupListenerコンポーネントに解決されるEL式を入力します。

    • Usage: HTML5ブラウザでのinputListOfValuesコンポーネントのレンダリング方法を指定します。有効な値は、autotextおよびsearchです。デフォルトはautoです。

      使用方法のタイプがsearchの場合、inputListOfValuesコンポーネントはHTML5の検索入力タイプとしてレンダリングされます。一部のHTML5ブラウザでは、検索テキストの消去に使用できる「取消」アイコンが追加される場合があります。

    このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。

  5. ユーザーが新しい項目を作成できるようにする場合は、手順4で指定されたIDを使用してポップアップ・ダイアログを作成します。詳細は、第13章「ポップアップ・ダイアログ、メニューおよびウィンドウの使用方法」を参照してください。

  6. コンポーネント・パレットで、「操作」パネルから「自動提案動作」をドラッグしてinputListOfValuesコンポーネントに子としてドロップします。

  7. プロパティ・インスペクタで、自動提案属性ごとに次を入力します。

    • suggestItemsメソッドに解決されるEL式。

      メソッドはsuggestItemsList<javax.model.SelectItem>を返す必要があります。メソッド・シグネチャは、List<javax.model.SelectItem> suggestItems(javax.faces.context.FacesContext, oracle.adf.view.rich.model.AutoSuggestUIHints)の形式である必要があります。

    • smartListメソッドに解決されるEL式。メソッドはスマート・リスト項目のList<javax.model.SelectItem>を返す必要があります。

    • 自動提案リストに表示する項目の数。完全なリストを表示するには-1を入力します。

    このメソッドをマネージドBeanで実装している場合、JSFページ・エントリは例11-3に示す形式である必要があります。

    例11-3 LOVのautoSuggestBehaviorタグ

    <af:inputListOfValues value="#{bean.value}" id="inputId">
        ...
        <af:autoSuggestBehavior 
              suggestItems="#{bean.suggestItems}"
              smartList="#{bean.smartList}"
              maxSuggestedItems="7"/>
    </af:inputListOfValues>
    

    コンポーネントがADFモデルなどのデータ・モデルで使用される場合、suggestItemメソッドはデフォルト実装で提供される必要があります。

  8. ADFモデルを使用していない場合は、suggestItemsメソッドを作成してリストを処理および表示します。suggestItemsメソッド・シグネチャを例11-4に示します。

    例11-4 suggestItemsメソッド・シグネチャ

    List<javax.model.SelectItem> suggestItems(javax.faces.context.FacesContext,
        oracle.adf.view.rich.model.AutoSuggestUIHints) 
    

11.3.2 LOVコンポーネントの「検索および選択」ダイアログのスキニングに関する必知事項

デフォルトでは、inputComboboxListOfValuesおよびinputListOfValuesコンポーネントの「検索および選択」ダイアログのサイズは、レンダリング時にエンド・ユーザーが変更できます。例11-5に示すように、アプリケーションのスキン・ファイルで-tr-stretch-search-dialogセレクタ・キーをfalseに設定することにより、エンド・ユーザーがこれらのダイアログのサイズを変更できないようにできます。-tr-stretch-search-dialogセレクタ・キーのデフォルト値はtrueです。スキニングの詳細は、スキニングに関する章を参照してください。

例11-5 「検索および選択」ダイアログのサイズ変更の無効化

af|inputComboboxListOfValues{
  -tr-stretch-search-dialog: false;
}
af|inputListOfValues{
  -tr-stretch-search-dialog: false;
}

11.4 InputComboboxListOfValuesコンポーネントの使用方法

inputComboboxListOfValuesコンポーネントを使用すると、ユーザーはドロップダウン・リストから値を選択し、inputListOfValuesコンポーネントと同じように、ページのLOVフィールドおよび可能な場合はその他のフィールドに移入できます。ただし、リストの値を完全なリストとして表示することや、最近参照した値ごとに表示することも可能になります。問合せAPIを実装していれば、11.2項「ListOfValuesデータ・モデルの作成」で説明されているように、ポップアップ・ダイアログで検索を実行するようにコンポーネントを構成することもできます。

スキニングと「検索および選択」ダイアログのサイズ変更の詳細は、第11.3.2項「LOVコンポーネントの「検索および選択」ダイアログのスキニングに関する必知事項」を参照してください。

11.4.1 inputComboboxListOfValuesコンポーネントの追加方法

始める前に:

ページまたはページ・フラグメントをすでに作成している必要があります。

inputComboboxListOfValuesコンポーネントを追加する手順:

  1. コンポーネント・パレットで、「共通」パネルから入力コンボ・ボックス値リストをドラッグしてページにドロップします。

  2. プロパティ・インスペクタで、「共通」セクションを開いて次の属性を設定します。

  3. 「外観」セクションを開き、次の属性値を設定します。

    • popupTitle: 「検索および選択」ポップアップ・ダイアログのタイトルを指定します。

    • searchDesc: マウスが置かれた際にコンポーネントのヒントとして表示するテキストを入力します。

    • Placeholder: inputComboboxListOfValuesコンポーネントが空でフォーカスが設定されていない場合に、コンポーネントに表示されるテキストを指定します。コンポーネントにフォーカスが設定されるか、値が入力されると、プレースホルダ・テキストは非表示になります。

      プレースホルダ・テキストは、ユーザーがinputComboboxListOfValuesコンポーネントに入力する必要のある内容を知らせる目的で使用されます。


      注意:

      プレースホルダ値はHTML5を完全にサポートするブラウザでのみ動作します。

    このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。

  4. 「動作」セクションを開き、次の属性値を設定します。

    • autoSubmit: 該当するアクション(クリックやテキストの変更など)が実行された場合に、含まれているフォームがコンポーネントにより自動的に送信されるようにするにはtrueに設定します。これにより、オートコンプリートが機能します。

    • createPopupId: リストに新規オブジェクトを作成するために使用されたポップアップ・ダイアログを実装した場合は、そのポップアップ・コンポーネントのIDを指定します。これにより、定義したダイアログにバインドされたcommandToolbarButtonコンポーネントを含む表の上にtoolbarコンポーネントが表示されます。ポップアップにダイアログを追加した場合は、表をリフレッシュするタイミングが自動的に決定されます。ポップアップにダイアログを追加しなかった場合、表は常にリフレッシュされます。

    • launchPopupListener: ポップアップ・ダイアログが開かれる際に追加の機能を提供するために実装するlaunchPopupListenerハンドラに解決されるEL式を入力します。

    • returnPopupListener: 値が戻された場合に追加の機能を提供するために実装するreturnPopupListenerハンドラに解決されるEL式を入力します。

    • Usage: HTML5ブラウザでのinputComboboxListOfValuesコンポーネントのレンダリング方法を指定します。有効な値は、autotextおよびsearchです。デフォルトはautoです。

      使用方法のタイプがsearchの場合、inputComboboxListOfValuesコンポーネントはHTML5の検索入力タイプとしてレンダリングされます。一部のHTML5ブラウザでは、検索テキストの消去に使用できる「取消」アイコンが追加される場合があります。

    このセクションの残りの属性は、その他の入力コンポーネントと同じ方法で移入できます。詳細は、9.3項「inputTextコンポーネントの使用方法」を参照してください。

  5. ドロップダウンのコンテンツが配信されるタイミングを制御する場合、「その他」セクションを開き、contentDelivery属性を次の値の1つに設定します。

    • immediate: すべての非表示のコンテンツは、ドロップダウン・リストが表示されるときに送信されます。LaunchPopupEventはキューに入りません。

    • lazy: 非表示のコンテンツは、コンテンツが初めて表示されるときにのみ送信されます。表示されてコンテンツがレンダリングされると、メモリーに残ります。LaunchPopupEventは、ドロップダウンが初めて表示されるときにのみキューに入ります。

    • lazyUncached: 非表示のコンテンツは、表示されるたびに作成されます。その後非表示になると、コンテンツは破棄されます。LaunchPopupEventは、ドロップダウン・パネルの表示中にキューに入ります。これがデフォルトです。

  6. launchPopupListenerを使用している場合は、LaunchPopupEventクラスのgetPopupType()メソッドを使用してイベントのソースを区別できます。getPopupType()は、イベントが「LOV検索および選択」ダイアログを起動した結果である場合にDROPDOWN_LISTを返し、イベントがユーザーによるダイアログでの「検索」ボタンのクリックの結果である場合にSEARCH_DIALOGを返します。

  7. ユーザーが新しい項目を作成できるようにする場合は、手順5で指定されたIDを使用してポップアップ・ダイアログを作成します。詳細は、第13章「ポップアップ・ダイアログ、メニューおよびウィンドウの使用方法」を参照してください。

  8. コンポーネント・パレットで、「操作」パネルから「自動提案動作」をドラッグし、inputComboboxListOfValuesコンポーネントに子としてドロップします。

  9. プロパティ・インスペクタで、自動提案属性ごとに次を入力します。

    • suggestItemsメソッドに解決されるEL式。

      メソッドはsuggestItemsList<javax.model.SelectItem>を返す必要があります。メソッド・シグネチャは、List<javax.model.SelectItem> suggestItems(javax.faces.context.FacesContext, oracle.adf.view.rich.model.AutoSuggestUIHints)の形式である必要があります。

    • smartListメソッドに解決されるEL式。メソッドはスマート・リスト項目のList<javax.model.SelectItem>を返す必要があります。

    • 自動提案リストに表示する項目の数。完全なリストを表示するには-1を入力します。

    このメソッドをマネージドBeanで実装している場合、JSFページ・エントリは例11-6に示す形式である必要があります。

    例11-6 LOVのautoSuggestBehaviorタグ

    <af:inputComboboxListOfValues value="#{bean.value}" id="inputId">
        ...
        <af:autoSuggestBehavior 
              suggestItems="#{bean.suggestItems}"
              smartList="#{bean.smartList}"
              maxSuggestedItems="7"/>
    </af:inputComboboxListOfValues>
    

    コンポーネントがADFモデルなどのデータ・モデルで使用される場合、suggestItemメソッドはデフォルト実装で提供される必要があります。

  10. コンポーネントをADFモデルとともに使用していない場合は、suggestItemsメソッドを作成してリストを処理および表示します。suggestItemsメソッド・シグネチャを例11-7に示します。

    例11-7 suggestItemsメソッド・シグネチャ

    List<javax.model.SelectItem> suggestItems(javax.faces.context.FacesContext,
        oracle.adf.view.rich.model.AutoSuggestUIHints)