我在“ p:dataTable”列中有一个复选框,并且只有在选中某行的情况下,我才想绘制一个按钮。 (我不使用selectionMode =“ multiple”,因为不是我的所有行都有复选框,只有一部分)
//列表
<p:column>
<p:selectBooleanCheckbox
rendered="#{item.esBorrable}"
valueChangeListener="#{candidatoController.checkCandidatoGdprBorrable}"
value="#{item.borrar}">
<p:ajax
event="change"
process="@form"
update="@(.button-asociar-chequeados)" />
</p:selectBooleanCheckbox>
</p:column>
//控制器
public void checkCandidatoGdprBorrable(ValueChangeEvent event) {
listCandidatoGdprDto.setHayCandidatosBorrables(false);
@SuppressWarnings("unchecked")
List<CandidatoGdpr> candidatos = (List<CandidatoGdpr>) listCandidatoGdprDto.getDataModel().getWrappedData();
for (CandidatoGdpr candidatoGdpr : candidatos) {
if (candidatoGdpr.getBorrar()) {
listCandidatoGdprDto.setHayCandidatosBorrables(true);
}
}
}
//按钮
<p:outputPanel styleClass="button-asociar-chequeados">
<p:commandButton
value="Borrar chequeados"
icon="aba-icon ss_arrow_in"
rendered="#{listCandidatoGdprDto.hayCandidatosBorrables}"
onclick="PF('deleteCandidatoGdprConfirmDialogWidget').show();"
title="Borrar chequeados a la petición" />
代码运行得很好,但是会带来一点点延迟,直到我选择两行两行,没有按钮可以绘制。