selectItemタグとselectItemsタグについて

リストに単一の項目を作成するには、selectItemタグを使用します。JSPでitemLabelおよびitemValue属性を定義するか、またはselectItemタグのvalue属性を、javax.faces.model.SelectItemインスタンスを戻すBeanのメソッドにバインドできます。

ユーザーがリストから項目を選択すると、itemValueがリクエスト・パラメータとして送信され、対応するリスト・タグのvalue属性の値にもなります。したがって、selectItemitemValueのタイプが、対応するリストのバインド先のタイプと同じであることを確認する必要があります。

次のコードでは、selectItemタグを使用して、ユーザーがリストから1つの部門を選択できるリストボックスを表示しています。

<h:selectOneListbox>
<f:selectItem itemLabel="Human Resources" itemValue="1"/>
<f:selectItem itemLabel="Product Development" itemValue="2"/>
<f:selectItem itemLabel="Marketing" itemValue="3"/>
<f:selectItem itemLabel="Sales" itemValue="4"/>
</h:selectOneListbox>

項目は、コードに記述されている順序でWebページ上に表示されます。ページがレンダリングされるときは、デフォルトで、リスト内の最初の項目が選択され、別の値を明示的に設定しないかぎりその項目がリストの値となります。

フォーム内のリスト

JSPでリスト項目を作成するかわりに、selectItemsタグを使用できます。このタグのvalue属性は、次のいずれかにバインドする必要があります。

次のJSPコードは、同じリストボックスをselectItemsタグを使用して作成する方法を示しています。

<h:selectOneListbox>
<f:selectItems value="#{employees.departments}"/>
</h:selectOneListbox>

selectItemsタグが、値バインディングを使用して、次のコードに示すemployeesマネージドBeanのdepartmentsプロパティを参照していることに注意してください。

private SelectItem[] departments =
{
new SelectItem(new Integer(1), "Human Resources"),
new SelectItem(new Integer(2), "Product Development"),
new SelectItem(new Integer(3), "Marketing"),
new SelectItem(new Integer(4), "Sales")
};
public SelectItem[] getDepartments()
{
return departments;
}

項目は、selectItemタグと同様に、コードに記述されている順序で表示されます。


リストの作成および編集