PrimefacesのSelectManyチェックボックスを使用していて、Beanに値を格納する際に問題が発生しています。
SelectManyCheckボックスの配列が必要です。これがこれまでのxhtmlです。
<c:set var="obj" value="#{userBean.userSettingsMap}"> </c:set>
<c:forEach items="#{obj}" var="entry">
<h:outputText value="#{entry.key} " /><!--Correctly prints the key -->
<p:selectManyCheckbox value="#{entry.value}"><!-- `entry.value` SHOULD correspond to inner lists --->
<!-- I want values of these check boxes to be updated in my ManagedBean's property -->
<f:selectItem itemLabel="Option 1" itemValue="Option 1" />
<f:selectItem itemLabel="Option 2" itemValue="Option 2" />
<f:selectItem itemLabel="Option 3" itemValue="Option 3" />
</p:selectManyCheckbox>
</c:forEach>
[多数選択の配列]チェックボックスがページに表示されます。しかし、ページを送信しても、サブリストは更新されません。むしろ、ManagedBeanのオブジェクトが更新されていません。
したがって、送信すると、ダイアログに空白のリストが表示されます。
{キー1=[]、キー2 = []}
私のManagedBeanには、
private Map<String,List<String>> userSettingsMap;
サブリストが <p:selectManyCheckbox>
ビューのそれぞれに対応する場所
[送信]ボタンは例と同じです。
<p:commandButton value="Submit" update="display" oncomplete="dlg.show()" />
<p:dialog header="Selected Values" modal="true" showEffect="fade" hideEffect="fade" widgetVar="dlg">
<p:outputPanel id="display">
<p:dataList value="#{userService.userMaintainceMap}" var="option">
#{option}
</p:dataList>
</p:outputPanel>