В соответствии с предложением BalusC для этого вопроса ссылка использовать заполнение в столбце данных таким образом.
<h:dataTable id="mainDatatable" value="#{bean.listOfRows}" var="eachRow" id="theDataTable">
<h:column>
<h:panelGroup id="padding" layout="block">
<p:outputPanel rendered="#{eachRow.visible}">
<h:selectManyCheckbox
value="#{xxxx}"
label="#{xxxx}">
<f:selectItems value="#{checkBoxItems}" var="eachItem" itemLabel="#{eachItem.label}" itemValue="#{eachItem.value}" />
<p:ajax event="change" update="theDataTable" />
</h:selectManyCheckbox>
</p:outputPanel>
<p:outputPanel rendered="#{eachRow.visible}">
<h:selectOneRadio
value="#{xxxx}"
label="#{xxxx}">
<f:selectItems value="#{radioItems}" var="eachItem" itemLabel="#{eachItem.label}" itemValue="#{eachItem.value}" />
<p:ajax event="change" update="theDataTable" />
</h:selectOneRadio>
</p:outputPanel>
<p:outputPanel rendered="#{eachRow.visible}">
</p:outputPanel>
<p:outputPanel rendered="#{eachRow.visible}">
</p:outputPanel>
<p:outputPanel rendered="#{eachRow.visible}">
</p:outputPanel>
<p:outputPanel rendered="#{eachRow.visible}">
</p:outputPanel>
.
.
.
</h:panelGroup>
</h:column>
</h:dataTable>
Объект данных создает заполнение для каждого компонента в столбце, независимо от того, визуализирован он или нет.Теперь дело за вашей зависимой логикой.Если вы хотите обновить определенную строку таблицы данных, используйте идентификатор клиента, сгенерированный из базового компонента или привязав компонент к компоненту, как это было предложено BalusC в этом вопросе .Идентификатор клиента будет иметь формат mainDatatable: rowIndex: padding.Ура!