Вместо использования valueChangeListener
ваш метод будет работать, если вы используете атрибут listener
тега <f:ajax>
.Это было бы что-то вроде этого:
<h:selectBooleanCheckbox value="#{bean.selectAll}">
<f:ajax listener="#{bean.selectAllCustomers}" render="entireLoop"/>
</h:selectBooleanCheckbox>
Кроме того, вам не нужно отправлять всю форму с execute="@form"
.Вам нужно только передать свойство selectAll
и повторно отобразить entireLoop
.
Если вы действительно хотите использовать valueChangeListener
, вы должны заметить, что ваш метод будет запущен до того, как новое значение будет примененоselectAll
свойство.В результате ваш entireLoop
не будет обновлен до следующего запроса.Чтобы использовать valueChangeListener
, ваш метод слушателя должен выглядеть следующим образом:
public void selectAllCustomers(ValueChangeEvent e) {
boolean newSelectAll = (Boolean) e.getNewValue();
Iterator<Users> keys = customersMap.keySet().iterator();
while(keys.hasNext()) {
Users user = keys.next();
customersMap.put(user, newSelectAll);
}
}