我试图将<p:ajax event="rowSelect">
和<p:ajax event="rowUnselect">
与<h:selectBooleanCheckbox>
“链接”,因此当选中datatable行时,复选框将一起选中,当选中复选框时,也会选中datatable行。
现在的问题是:在转到另一个分页页面时,我可以保存复选框的状态,但是我需要选中复选框,然后选择行,然后只有行才能保存状态。如果我尝试只选中复选框并转到其他分页页,当我回到分页页时,它不会保存状态,但是如果我选择行并转到其他分页页,它将保存状态。如果我选择行和复选框并转到另一个分页页面,它也不会保存状态。知道当单击1时,如何选中复选框并选择行,如果转到另一个分页页,则可以保存状态吗?
<p:dataTable value="#{machine.sub}" var="subDir"
id="fileDirectories" rowClasses="row1-whitebg,row2-bluebg"
selectionMode="multiple" selectionPageOnly="false"
rowKey="#{subDir.directory.path}" headerClass="title-column"
rowIndexVar="idx" rows="10" rowsPerPageTemplate="10,20,50" paginator="true"
paginatorAlwaysVisible="false"
paginatorTemplate="#{WebConstant.PAGINATOR_TEMPLATE}">
<p:ajax event="rowSelect" listener="#{machine.selectedRow}"/>
<p:ajax event="rowUnselect" listener="#{machine.unSelectedRow}"/>
<p:column>
<f:facet name="header">
<h:outputText value="#{msg['machine_download']}"/>
</f:facet>
<h:panelGroup id="panelGroupChkSelect">
<h:selectBooleanCheckbox id="chkSelect" value="#{subDir.selected}"
rendered="#{subDir.directory.file}">
<c:if test="#{machineLogExplorerPage.checkButton()}">
<f:attribute name="checked" value="checked"/>
</c:if>
</h:selectBooleanCheckbox>
</h:panelGroup>
</p:column>
</p:dataTable>
Java代码
private boolean checked;
public void selectedRow() {
checked = true;
}
public void unSelectedRow() {
checked = false;
}
public boolean checkButton() {
return checked;
}
发布于 2021-10-15 05:37:47
您不需要自己实现复选框。只需添加一个选择列,如:
<p:column selectionMode="multiple"/>
要跟踪所选内容,请使用:
<p:dataTable selectionMode="multiple"
selection="#{bean.listOfSelectedItems}"
...>
请参见:
https://stackoverflow.com/questions/69579601
复制相似问题