本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在 Wicket 中使用 AJAX 更新表格列

发布于2025-01-07 22:07     阅读(149)     评论(0)     点赞(5)     收藏(5)


我有一个 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;
    }
}

Component你可以使用该方法以任何你想要的方式发送这样的事件send()。你可以像这样发送事件:

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()



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/694787/440a6422d9ae026efbfb/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)