Это часть Wicket GUI (Wicket 7.6.0), которая выступает в качестве внешнего интерфейса для отображения некоторых записей базы данных.
На этой указанной странице c у нас есть форма, где пользователь может искать записи, указав, например, дата начала, дата окончания и т. д. c. ограничить результаты. После нажатия на кнопку под этой формой поиска отображаются результаты поиска.
Эти результаты отображаются с использованием калитки DataTable
с нумерацией страниц. Записи в этой таблице имеют флажок. Это реализуется с помощью пользовательского CheckBoxPanel
(расширенного с Panel
), к которому добавляется экземпляр Check
(org.apache.wicket.markup.html.form.Check
).
Теперь я хочу отреагировать на каждый выбор и снимите флажок. Причина этого заключается в том, что мы хотим отслеживать элементы выбора даже при разбивке на страницы во втором списке.
Я добавил AjaxFormChoiceComponentUpdatingBehavior
в группу (см. Источник метода addCheckboxes
ниже). Это работает до тех пор, пока выбран хотя бы один флажок - для каждого щелчка на флажке печатается оператор отладки.
Но если последний флажок снят, метод onUpdate()
равен , а не вызывается, несмотря на то, что сделан вызов AJAX (проверено с помощью Firefox Developer Tools ). Полезная нагрузка запроса group%3Aactions=
. Когда я выбираю элемент, полезная нагрузка запроса, например: group=check4&group%3Aactions=
.
Мой вопрос: Можно ли получить уведомление, если ни один элемент больше не выбран? Это необходимо для сохранения упомянутого ранее «второго списка» в формате syn c.
. В решении не нужно использовать AJAX, решение POST classi c также будет в порядке.
private void addCheckboxes() {
System.out.println("addCheckboxes called!");
selectedModel = new CollectionModel<FaultModel>(new ArrayList<FaultModel>());
group = new CheckGroup<FaultModel>("group", selectedModel);
group.onSelectionChanged();
group.setRequired(Boolean.TRUE);
CustomCheckGroupSelector<FaultModel> groupSelector = new CustomCheckGroupSelector<>("groupselector", rows.isEmpty());
RemarkModalWindow remarkModal = new RemarkModalWindow("remarkModal", selectedModel);
IndicatingAjaxButton actionButton = new ActionButton<FaultModel>("execute", this, remarkModal, rows.isEmpty());
DefaultDataTable<?, String> table = TableFactory.getTable2(CustomType.FAULT, rows, page);
group.add(table);
group.add(groupSelector);
group.add(remarkModal);
group.add(actionButton);
group.add(new AjaxFormChoiceComponentUpdatingBehavior() {
@Override protected void onUpdate(AjaxRequestTarget target) {
System.out.println("!! onUpdate !! Adding selected items to second list.");
}
});
add(group);
}
```