【发布时间】:2021-10-15 03:13:39
【问题描述】:
I was trying to "link" <p:ajax event="rowSelect"> and <p:ajax event="rowUnselect"> with <h:selectBooleanCheckbox> so when datatable row is selected, the checkbox would check together and when checkbox is checked, datatable row is selected too.
现在的问题:我可以在转到另一个分页页面时保存复选框的状态,但我需要选中复选框然后选择行,然后它才会保存状态。如果我尝试仅选中复选框并转到其他分页页面,当我返回分页页面时它不会保存状态,但如果我选择行并转到其他分页页面,它将保存状态。如果我选择行并选中复选框并转到另一个分页页面,它也不会保存状态。知道如何在单击任一 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;
}
【问题讨论】:
标签: jsf primefaces primefaces-datatable