gpt4 book ai didi

java - 在 Wicket 中通过 AJAX 更新表列

转载 作者:行者123 更新时间:2023-12-01 14:51:25 26 4
gpt4 key购买 nike

我有一个 AjaxFallbackDefaultDataTable 表,其中有一些文本列(PropertyColumn)。该表还包含一个带有可编辑文本字段的列。我想通过 AJAX 更新 PropertyColumn 之一,但我不想更新整个表。我怎样才能做到这一点?

最佳答案

如果您使用 Wicket 6,您可以使用组件间事件。

首先创建一个包含 AjaxRequestTarget 的事件,如下所示:

public class AjaxUpdateEvent {
private final AjaxRequestTarget target;

public AjaxUpdateEvent(AjaxRequestTarget target) {
this.target = target;
}
public AjaxRequestTarget getAjaxRequestTarget() {
return target;
}
}

您可以使用 send() 方法从任何您想要的 Component 发送此类事件。您发送这样的事件:

send(getPage(), Broadcast.DEPTH, new AjaxUpdateEvent(target));

然后在 AjaxFallbackDefaultDataTable 中,我会尝试覆盖 newCellItem 并在某个时间从某处触发时监听该事件,并将所需的单元格项目添加到 AjaxRequestTarget。类似这样的事情:

    AjaxFallbackDefaultDataTable table =
new AjaxFallbackDefaultDataTable("table", null, null, FLAG_RESERVED1) {
@Override
protected Item newCellItem(String id, int index, IModel model) {
Item item;
if (index == indexOfColumnYouWant){
item = new Item(id, index, model) {
@Override
public void onEvent(IEvent<?> event) {
super.onEvent(event);
if ((event.getPayload() instanceof AjaxUpdateEvent) ){
((AjaxRequestTarget)event.getPayload()).add(item);
}
}
};
} else {
item = super.newCellItem(id, index, model);
}

return item;
}
};

此外,如果该项目 isVisible(),您还可以将其添加到目标。

关于java - 在 Wicket 中通过 AJAX 更新表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14800560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com