wicket-如何用ajax刷新表中的单行

hk8txs48  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(302)

在我的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 .
还有别的办法吗?

wf82jlnq

wf82jlnq1#

覆盖 DataTable#newRowItem() 并返回一些具有 outputMarkupId = true .

public class MyRow<T> extends Item<T> {
   public MyRow<T>(String id, int index, IModel<T> model) {
     super(id, index, model);

     setOutputMarkupId(true);
   }
}

然后在ajax回调方法中执行以下操作:

ajaxRequestTarget.add(findParent(MyRow.class));

相关问题