Отличным предложением является t:selectManyCheckbox layout="spread"
.
В качестве альтернативы вы также можете просто связать компонент h:selectBooleanCheckbox
со свойством Map<Long, Boolean>
, где Long
представляетID сущности (или любой другой идентификатор, который вы можете использовать для идентификации строки), и Boolean
представляет проверенное состояние.
Например:
public class Bean {
private List<Entity> entities;
private Map<Long, Boolean> checked = new HashMap<Long, Boolean>();
public void submit() {
for (Entity entity : entities) {
if (checked.get(entity.getId())) {
// Entity is checked. Do your thing here.
}
}
}
// ...
}
с
<h:dataTable value="#{bean.entities}" var="entity">
<h:column>
<h:selectBooleanCheckbox value="#{bean.checked[entity.id]}" />
</h:column>
...
</h:dataTable>
<h:commandButton value="submit" action="#{bean.submit}" />
Map<Long, Boolean>
будет автоматически заполнен идентификатором всех объектов в качестве ключей карты, а значение флажка будет установлено в качестве значения карты, связанного с идентификатором объекта в качестве ключа.
См. Также: