行を選択して別のページに移動し、選択した行が選択されていないページに戻ると、複数の選択とページネーションでデータテーブルを使用しています。私はprimefaces 3.5、mojarra、jboss 7.1を使用しています。私のBeanはviewScopedです。以下は私のコードです:
<p:dataTable id="boxList" var="box" value="#{protocolBean.boxModel}" paginator="true" rows="10" paginatorPosition="bottom"
selection="#{protocolBean.selectedBoxes}">
<f:facet name="header">
#{label['boxes']}
</f:facet>
<p:column selectionMode="multiple" style="width:4%" />
<p:column>
<h:outputText value="#{box.code}"/>
</p:column>
<p:column filterBy="#{box.selected}" filterOptions="#{protocolBean.selectedOptions}" filterMatchMode="exact">
<h:outputText value="#{box.selected}"/>
</p:column>
</p:dataTable>
モデル:
public class BoxModel extends ListDataModel<Box> implements SelectableDataModel<Box> {
public BoxModel() {
}
public BoxModel(List<Box> boxes) {
super(boxes);
}
@Override
public Object getRowKey(Box box) {
return box.getId();
}
@SuppressWarnings("unchecked")
@Override
public Box getRowData(String rowKey) {
List<Box> boxes = (List<Box>) getWrappedData();
for(Box b : boxes) {
if(b.getId().equals(rowKey))
return b;
}
return null;
}
}