したがって、送信時にこのボタンがあります。実行される機能がいくつかあり、選択したチェックボックスをリストから削除する必要があります。
以下のコードは、そのボタンの使用法と、特定のチェックボックスの選択を削除するために行った実装を示しています。
Button resumeDrive = new AjaxButton("resume", driveSearchForm)
/**
*
*/
private static final long serialVersionUID = -7016746377299867219L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
log.info("envoking resume");
target.addComponent(form);
try {
List<DashboardModel> list = (List<DashboardModel>) group.getDefaultModelObject();
log.info("drives data : " + list);
if (list != null) {
List<Long> drives = new ArrayList<Long>();
List<DashboardModel> drivesToRemove = new ArrayList<DashboardModel>();
for (DashboardModel drive : list) {
drives.add(drive.getExecutionUnitId());
drivesToRemove.add(drive);
log.info("drivesToRemove :" + drivesToRemove);
}
log.info("selected drive: " + drives);
if (drives.size() > 0) {
log.info("Execution Ids to resume : " + drives);
driveResumeService.resumeDrives(drives);
drivesData.removeAll(drivesToRemove);
log.info("drivesdata :" + drivesData);
warn("Execution Ids to resume : " + drives);
} else {
warn("No drives selected for resuming.");
}
} else {
info("No drives to resume.");
}
} catch (Exception e) {
warn("Failed to resume jobs. " + e.getMessage());
log.info("Failed to resume jobs", e);
}
target.addComponent(group);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.addComponent(form);
}
driveSearchForm.add(resumeDrive);
resumeDrive.setDefaultFormProcessing(true);
resumeDrive.add(new AjaxFormValidatingBehavior(driveSearchForm, "onClick"));
--> my model returns this driveData.
---> I'm sticking the pageableListView code also alongside.
private CheckGroup<DashboardModel> group;
group = new CheckGroup<DashboardModel>("group", new ArrayList<DashboardModel>());
driveSearchForm.add(group);
group.add(new CheckGroupSelector("allSelected"));
group.setOutputMarkupId(true);
pageableListView = new PageableListView<DashboardModel>("searchResults", driveDataModel, 10) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<DashboardModel> item) {
item.add(new Check("check", item.getModel()));
item.add(new Label("name", item.getModelObject().getName()));
item.add(new Label("status", item.getModelObject().getStatus().toString()));
item.add(new Label("driveUrl", item.getModelObject().getDriveURL()));
}
};
pageableListView.setRenderBodyOnly(false);
pageableListView.setReuseItems(true);
group.add(pageableListView);
group.add(new PagingNavigator("navigator", pageableListView));
そのため、モデルが更新されていることがわかりましたが、UIで同じことが発生していません。つまり、選択したチェックボックスを更新されたリストから削除したいのですが.....提案してください......