Значение по умолчанию атрибута «selectionListener» для компонента af: table обычно выглядит следующим образом:
selectionListener="#{bindings.IterBinding.collectionModel.makeCurrent}"
Но если требуется некоторая специальная обработка выбора, можно указать собственный обработчик для события выбора, обычно в компоненте поддержки. В качестве первого шага в этом пользовательском обработчике программная функциональность по умолчанию вызывается для текущей строки. Это может выглядеть как следующий фрагмент кода:
public void testSelectionListener(SelectionEvent selectionEvent) {
JSFUtils.resolveMethodExpression("#{bindings.IterBinding.collectionModel.makeCurrent}", null,
new Class[]{SelectionEvent.class}, new Object[]{selectionEvent});
}
Это должно вести себя так же, как стандартный обработчик выбора, верно?
Но это не так.
При инициировании изменения выбора путем установки флажка в одном из столбцов таблицы «valueChangeListener» для этого af: selectBooleanCheckbox не срабатывает в этом случае. Он срабатывает при нажатии во второй раз. При использовании «selectionListener» по умолчанию он срабатывает всегда, как и ожидалось.
Есть идеи, что не так с пользовательским обработчиком?