selectOneMenu と値の設定について質問があります。ID、Text、および を持つ Object SampleDesc がありますList<SampleDescValues>
。各データテーブル行のテキストは出力ラベルで、選択メニューの値はList<SampleDescValues>
. XHTML:
<h:panelGroup id="tables">
<p:dataTable resizableColumns="true"
var="sampleDesc" id="SampleDescTable" rowIndexVar="rowIndex"
value="#{sampleBean.sampleDescList.list}"
rendered="#{sampleBean.sampleDescList.list.size() gt 0}">
<p:column>
<h:outputLabel value="#{sampleDesc.sampleDescText}"/>
</p:column>
<p:column>
<h:selectOneMenu required="#{sampleBean.sampleDescList.list.size() gt 0}" converter="#{sampleDescValueConverter}"
id="SampleDescValue" value="#{sampleBean.selectedSampleDescList.get(rowIndex)}">
<f:selectItem itemLabel="Select One" itemValue="#{null}"/>
<f:selectItems value="#{sampleDesc.sampleDescValues}" var="sdv"
itemLabel="#{sdv.sampleDescValuesText}" itemValue="#{sdv}" />
</h:selectOneMenu>
</p:column>
</p:dataTable>
</h:panelGroup>
コンバーターのセットアップがあり、それを単一の SampleDescValue に設定して値を設定したため、動作します。
問題は、フォームにデータベースのサンプルを入力しようとすると、selectonemenu の数が無限にある場合にドロップダウンの 1 つしか設定できないことです。
選択した値をprivate List<SampleDescValue> selectedSampleDescList;
送信しようとしても何もしませんが、データテーブルがレンダリングされていないときに機能します。