У меня та же проблема с простыми лицами 2.2.1
Я использую компонент Spinner с Ajax. Для каждого изменения счетчика я хочу обновить компонент DataTable (основные лица). И я не знаю, почему, каждый раз, когда я обновляю datatable, все строки выбираются, хотя selectionMode = "single" и выборка принимает параметр, который является POJO, а не списком. Это происходит в составной реализации.
<h:form id="frm">
(...)
<p:dataTable id="openingHoursTbl" var="oh" value="#{cc.attrs.openingHours}" rows="7"
selection="#{cc.attrs.selectedHours}" selectionMode="single"
onRowSelectUpdate="hoursTable"
style="width: 300px">
<p:column>
<f:facet name="header">
<h:outputText value="Day" />
</f:facet>
<h:outputText value="#{oh.displayedDays}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Opening Hours" />
</f:facet>
<h:outputText id="ohHeader" value="#{oh.displayedHours}" />
</p:column>
</p:dataTable>
(...)
<p:spinner value="#{hour.fromHour}" maxlength="2" size="2" stepFactor="1" min="0" max="23">
<p:ajax process="@form" update="#{cc.clientId}:frm:openingHoursTbl" event="change" />
</p:spinner>
(...)
</h:form>
Вот ответ, полученный от сервера (обратите внимание, что для входного тега выбора выделены все строки):
<partial-response>
<changes>
<update id="j_idt162:frm:openingHoursTbl">
<div id="j_idt162:frm:openingHoursTbl" class="ui-datatable ui-widget"
style="width: 300px">
<table>
(...)
</table>
<input type="hidden" id="j_idt162:frm:openingHoursTbl_selection"
name="j_idt162:frm:openingHoursTbl_selection" value="0,1,2,3,4,5,6" />
(...)
Спасибо за вашу помощь