Да, это возможно. Вы должны указать следующие вещи:
- Какие столбцы будут отображаться с помощью атрибута
reRender
тегов, которые могут вызывать метод MBean
- Какие строки будут отображаться с помощью атрибута
ajaxKeys
rich:dataTable
.
Атрибут ajaxKeys
связан с Set <Integer>
Объектом, который содержит номера строк, подлежащих обновлению.
Например, предположим, что вы хотите вызвать метод Mbean с помощью a4j:commandButton
и хотите визуализировать определенную строку и столбец после завершения действия. Вы можете использовать следующее:
<a4j:commandButton action="#{bean.someAction}" reRender="columnID,columnID2">
<f:setPropertyActionListener value="#{idx}" target="#{bean.selectedRow}" />
</a4j:commandButton>
<rich:dataTable id="myTable" value="#{bean.table}" var="me" ajaxKeys="#{bean.rowsToUpdate}" rowKeyVar="idx">
<rich:column id="columnID">
<h:outputText value="#{me.id}" />
</rich:column>
<rich:column id="columnID2">
<h:outputText value="#{me.valueOne}" />
</rich:column>
<rich:column>
<h:outputText value="#{me.valueTwo}" />
</rich:column>
</rich:dataTable>
Внутри bean.someAction()
вы добавляете номер строки, которую хотите обновить, к целому набору rowsToUpdate
:
HashSet<Integer> rows = new HashSet<Integer>();
rows.add(selectedRow);
setRowsToUpdate( rows );