リストボックスコンポーネント
を使用して、ユーザーは項目のリストから項目を選択できます。リストの項目がボックスに入りきらない場合は、スクロールバーが追加されます。
デフォルトでは、リストから 1 項目だけを選択できます。「multiple」プロパティーによって、ユーザーが複数の項目を選択できるかどうかが決まります。
「items」プロパティーを設定して、コンポーネントをデータベース表、または com.sun.webui.jsf.model.Option オブジェクトの配列、コレクション、またはマップに関連付けて、リストを生成できます。このプロパティーを設定するには、コンポーネントを右クリックし、「データにバインド」を選択します。には、リストの生成にデフォルトで使用される、listbox1DefaultOptions というような名前のオブジェクトが表示されます。
「selected」プロパティーを設定して、コンポーネントを、ユーザーが選択したリスト項目を表すモデルオブジェクトに関連付けます。モデルオブジェクトは、値が、リスト内の com.sun.webui.jsf.model.Option オブジェクトの値を表すオブジェクトの配列である必要があります。コンポーネントがはじめて描画されたとき、「selected」プロパティーの値に対応するオプションがある場合は、そのオプションが選択状態で示されます。
Visual Web JSF ページにリストボックスコンポーネントを追加すると、次の操作を使用して多くのことを実行できます。
id 属性の値になります。ページ Bean では、このプロパティーの値が Listbox オブジェクトの名前になります。labelOnTop」プロパティーを設定すると、リストの上に表示されます。labelOnTopプロパティーを設定しなかった場合は、リストの横に表示されます。
label」プロパティーはラベルコンポーネントほど柔軟ではありません。コンポーネントに対するラベルの位置など、ラベルの外観をより制御したい場合は、ラベルコンポーネントを使用できます。rows」プロパティーに 1 を設定した場合、リストボックスは、たいていのブラウザでドロップダウンリストとして描画されます。required アイコンが表示されます。 validate メソッド内にカーソルが置かれた状態で Java エディタが開き、このコンポーネントの値の妥当性を検査するコードを挿入できます。processValueChange メソッド内にカーソルが置かれた状態で Java エディタが開き、このコンポーネントの値に変更があったとき (たとえば、このコンポーネントの値を制御する別のコンポーネントの値をユーザーが変更したとき) に実行するコードを挿入できます。onclick」プロパティーが common_timeoutSubmitForm(this.form, '<コンポーネント ID>'); に設定されます。このコードによって、実行時にユーザーがコンポーネントの値を変更した場合に自動的にフォームが送信されます。フォームが送信されたら、サーバーで変換と妥当性検査が行われ、値変更のリスナーメソッドがある場合はそのメソッドが実行されてから、ページが再表示されます。
「変更時に自動送信」が設定されているコンポーネントには、仮想フォームを使用して、フォームの送信時に処理される入力フィールドを制限できます。自動送信するコンポーネントを、仮想フォームを送信するように定義した場合、自動送信時には仮想フォームに含まれるフィールドだけが処理されます。
「データにバインド」ダイアログで説明しているように、コンポーネントの「items」プロパティーをオブジェクトまたはデータプロバイダにバインドします。
items」プロパティーをオブジェクトにバインドするには、「オブジェクトにバインド」タブを選択し、リストの生成に使用する Bean プロパティーを選択します。この Bean プロパティーは、メンバーがすべて com.sun.webui.jsf.model.Option のサブクラスである Object 型の配列、マップ、またはコレクションである必要があります。 items」プロパティーを、リストの生成に使用するデータベース表または JavaBeans オブジェクトのデータプロバイダにバインドするには、「データプロバイダにバインド」タブを選択し、データプロバイダを選択します。selected」プロパティーをバインドして、ページ送信後にユーザーの選択内容を評価できます。