我正在使用 JSF 2.2.9,我有以下数据表和按钮:
<h:commandButton id="commandButtonRemoverSelected"
actionListener="#{managedBeanName.removeSelected()}"
class="btn btn-primary" value="Sim">
</h:commandButton>
<h:dataTable var="bean" value="#{managedBeanName.beans}" styleClass="table table-hover"
binding="#{managedBeanName.dataTable}">
<h:column headerClass="smallColumn">
<f:facet name="header">
<h:selectBooleanCheckbox valueChangeListener="#{managedBeanName.selectAll}">
<f:ajax execute="@form" render="@all" />
</h:selectBooleanCheckbox>
</f:facet>
<h:selectBooleanCheckbox value="#{managedBeanName.registrosSelecionados[bean]}" />
</h:column>
</h:dataTable>
按钮“commandButtonRemoverSelected”只需在第二次单击时调用 actionListener。当我从数据表中删除以下行时,一切正常(第一次单击时调用 commandButton):
<h:selectBooleanCheckbox value="#{managedBeanName.registrosSelecionados[bean]}" />
因此,我的 managedBean 有一个名为“registrosSelecionados”的 MAP,它应该存储一对“Bean,Boolean”。看:
private Map<Bean, Boolean> registrosSelecionados = new HashMap<Bean, Boolean>();