Я использую JSF 2.2 с Primefaces 5.1. Существует редактируемый формат, который можно использовать с возможностью разбивки на страницы.
<p:dataTable editMode="row"
editable="true"
value="#{usersBean.users}"
var="user" paginator="true" rows="20">
<p:ajax event="rowEditInit" onstart="handleRowEditInit(event,this);"/>
<p:column>
<p:rowEditor/>
</p:column>
<p:column headerText="Real name">
<p:cellEditor rendered="true">
<f:facet name="input">
<p:inputText value="#{user.realName}"/>
</f:facet>
<f:facet name="output">
<h:outputText value="#{user.realName}"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="User name">
<p:cellEditor>
<f:facet name="input">
<p:inputText value="#{user.userName}"/>
</f:facet>
<f:facet name="output">
<h:outputText value="#{user.userName}"/>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
Каждый раз, когда страница изменяется, datatable выполняет AJAX POST со всеми данными текущей страницы. Как вы можете частично увидеть на изображении ниже.
Для больших таблиц с большим количеством данных это приводит к огромным запросам. Это не обязательно? Есть ли способ изменить это поведение?