I got the solution with the help of 2 answers
- From this
- thanks to melloware above anser
.xhtml
<p:dataTable selection="#{myBean.selectedRows}" ... >
<p:ajax event="rowSelectCheckbox" process="@this" listener="#{myBean.onSelectRow}" />
<p:ajax event="rowUnselectCheckbox" process="@this" listener="#{myBean.onUnselectRow}" />
<p:ajax event="page" process="@this" listener="#{myBean.onPagination}" />
<p:ajax event="toggleSelect" process="@this" listener="#{myBean.onToggle}" />
<p:column selectionMode="multiple" ... />
...
</p:dataTable>
.java
private List<MyRowClass> selectedRows;
private List<MyRowClass> selectedRowsSaved;
...
public void onSelectRow(SelectEvent event){
selectedRowsSaved.add((MyRowClass) event.getObject());
}
public void onUnselectRow(UnselectEvent event){
selectedRowsSaved.remove((MyRowClass) event.getObject());
}
public void onToggle(ToggleSelectEvent event){
List<Object> completeListOfCurrentPage = (List<Object>) compteLazyDataModel.getWrappedData();
if(event.isSelected()) {
selectedRowsSaved.addAll(comptesListOfCurrentPage);
} else {
selectedRowsSaved.removeAll(comptesListOfCurrentPage);
}
}
public void onPagination(){
if(selectedRowsSaved!=null && selectedRowsSaved.isEmpty()}{
selectedRows.addAll(selectedRowsSaved);
}
}
public List<MyRowClass> getSelectedRows(){
return selectedRowsSaved;
}
public void setSelectedRows(List<MyRowClass> selectedRows){
this.selectedRows = selectedRows;
}