データ表について

JSPページにデータ表を作成するには、UIDataコンポーネントに対してdataTableタグを使用します。このコンポーネントは、戻された現在のデータに基づいて、行を動的に追加または削除できるため便利です。UIDataコンポーネントによって、データ項目のコレクションが反復され、各項目が使用可能になります。dataTableタグ内で使用できるのは、columnタグのみです。UIDataコンポーネントでデータが反復されると、行ごとにcolumnタグが処理されます。したがって、dataTableタグでは、データのコレクションへの値バインディング、表で使用されるスタイル、および行を表すために使用される変数などが処理されます。columnタグには、ヘッダーとフッターのfacetタグ、および表セル内の実際のデータを表示するために必要な関連する値バインディングが含まれたコンポーネント・タグが含まれています。列には、任意の数の他のコンポーネント・タグを含めることができます。

データのコレクションを表示するのではなく、標準のHTML表に類似した表を作成する場合は、「パネル・グリッドについて」を参照してください。

たとえば、従業員の名前、部門および電話番号を表示するデータ表を作成する場合、JSPのコードは次のようになります。

<h:dataTable rows="5" value="#{employeeTable.employees}" var="currentRow"
<h:column>
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:commandLink action="#{employeeBB.editLinkAction}">
<h:outputText value="#{currentRow.name}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Department"/>
</f:facet>
<h:outputText value="#{currentRow.department}"/>
</h:column> <h:column>
<f:facet name="header">
<h:outputText value="Phone"/>
</f:facet>
<h:outputText value="#{currentRow.phone}"/>
</h:column>
</h:dataTable>

表属性

rows属性は、一度に表示されるデータ・セットの行数を決定します。この属性は、Webページに現在表示されている行セットを管理するためのfirstタグ属性と併用できます。JSFでは、大規模なデータ・セット全体のページを変更するコンポーネントは提供されていません。したがって、独自のコンポーネントを作成するか、データ・コレクション全体を移動する他の方法を開発する必要があります。

value属性を使用して、データを保持しているマネージドBeanに表を値バインドします。バインド先は、次のいずれかです。

表が、オブジェクト、リスト、結果セットまたはJSTL結果オブジェクトにバインドされると、dataTableタグによって、次のリストに示す、javax.faces.model.DataModelを拡張するモデル内にオブジェクトがラップされます。

dataTableタグでは、表のバインド先のオブジェクトと直接対話するかわりに、これらのクラスが使用されます。

前述の例では、表はemployeeTableマネージドBeanにバインドされます。このBeanでは、employeeプロパティを使用してデータのコレクションが提供されます。

var属性は、現在の行にアクセスする方法を提供します。前述の例では、変数としてcurrentRowを使用することによって、従業員名の表示に使用されるoutputTextコンポーネント・タグでは、その値として#{currentRow.name}を使用できます。この式の2番目の部分がその列に表示されるBeanのプロパティです。

facetタグを使用して、ヘッダーとフッターの両方を挿入します。facetタグでは、コレクションの反復から導出されるのではなく、1回のみ表示されるテキストが提供されます。列の内容を示すには、他のコンポーネント・タグを挿入します。これらのコンポーネントは、表がバインドされるBeanのプロパティにバインドできます。前述の例では、Nameプロパティのデータを表示する列に2つのコンポーネント・タグがあります。1つは、commandLinkタグです。このタグは、名前を、employeeBBバッキングBeanのアクション・メソッドにバインドされるリンクにします。名前のテキストはoutputTextタグを使用して表示され、その値はemployee Beanのnameプロパティにバインドされています。ただし、Beanのプロパティに直接バインドするのではなく、dataTableタグに設定された変数(この場合はcurrentRow)にバインドします。この変数によって、各行にdataTableの反復から行セットが表示されるようになります。


データ表の作成および編集
データ表内の列の使用
データ表内のファセットの使用
JSF HTMLライブラリ - <h:dataTable>タグ