在我的wicket应用程序中,我有一个表,其中一行的每一列都由一个bean描述。其中一列包含一个ajax组件,该组件可以更改bean中的值,从而更改其他列中显示的值。
如何在不重新加载整个表的情况下更新这些列?
现在我使用以下代码:
public static <T> void refreshTableRow(AjaxRequestTarget target, Item<ICellPopulator<T>> columnItem) {
for (Component component : columnItem.getParent()) {
if (component instanceof Item) {
((Item<?>) component).stream()
.filter(Component::getOutputMarkupId)
.forEach(target::add);
}
}
}
但是为了使这个代码正常工作,我必须设置 outputMarkupId(true)
对于每个列的根组件,在中创建 IColumn#populateItem
.
还有别的办法吗?
1条答案
按热度按时间wf82jlnq1#
覆盖
DataTable#newRowItem()
并返回一些具有outputMarkupId = true
.然后在ajax回调方法中执行以下操作: