タブを動的に構築する JSF ページがあります。各タブには、いくつかの入力フィールドとコマンド ボタンがあります。フィールドとボタンは、タブの作成時に動的に作成されます。コマンド ボタンにバインド属性を追加すると、1 つのタブに 1 つのボタンしか生成されません。すべてのタブにコマンド ボタンが必要です。バインディング属性を削除すると、すべてのボタンが表示されますが、必要な検証は行われません。ループで作成された各コマンド ボタンに一意のバインド値を追加するにはどうすればよいですか。
以下のコードはすべて、タブ ビューでタブを生成するループ内にあります。
<ui:repeat value="#{cc.attrs.dataTableTemplate.columns}" var="column">
<p:outputLabel styleClass="outputLabel" value="#{column.heading}"
for="inputtext" rendered="#{column.editable}"/>
<p:inputText value="#{cc.attrs.dataTableTemplate.collectorValue[column.name]}"
rendered="#{column.editable}"
id="inputtext" required="#{not empty param[add.clientId]}"/>
<div class="clear"> </div>
</ui:repeat>
<p:commandButton styleClass="commandButton"
binding="#{add}"
value="add"
update="pnl_codetable @parent"
title="Add">
<p:collector value="#{cc.attrs.dataTableTemplate.collectorValue}"
addTo="#{cc.attrs.pageBean.getDataTableList(
cc.attrs.dataTableTemplate.tableListName)}" />
</p:commandButton>
タブを作成し、maintenence_code タグを使用して上記のコードを呼び出すコードを次に示します。
<p:accordionPanel id="pnl_accord_codetables" dynamic="true" cache="false">
<p:ajax event="tabChange" listener="#{pc_Maintenence.onTabChange}"/>
<c:forEach items="#{pc_Maintenence.codeMaintenenceTables}" var="codetable">
<p:tab title="#{codetable.tableName}">
<util:maintenence_code pageBean="#{pc_Maintenence}" dataTableTemplate="#{codetable}"/>
</p:tab>
</c:forEach>
</p:accordionPanel>