简体   繁体   English

LoadableDetachableModel 未在提交时刷新,model 从页面中移除

[英]LoadableDetachableModel is not refreshed onSubmit and the model is removed from the page

I am trying to query table and re-render the LoadableDetachableModel with result list.我正在尝试查询表并使用结果列表重新渲染 LoadableDetachableModel。 Table is empty upon page initialization.页面初始化时表为空。 After onSubmit method call the table is removed from the page and model is gone.在 onSubmit 方法调用后,表从页面中删除,model 消失了。 All I got is below JS error.我得到的只是JS错误。 I can see that the property is not rendered yet but do not know why.我可以看到该属性尚未呈现,但不知道为什么。

Uncaught TypeError: Cannot read properties of null (reading 'nextSibling')
    at Object.Wicket.replaceOuterHtmlSafari (wicket-ajax.js:214)
    at Object.Wicket.replaceOuterHtml (wicket-ajax.js:222)
    at wicket-ajax.js:931
    at Object.<anonymous> (wicket-ajax.js:91)

Here is the relevant code:以下是相关代码:

final WebMarkupContainer listViewContainerForLogTable = new WebMarkupContainer("listViewContainerForLogTable");
        listViewContainerForLogTable.setOutputMarkupId(true);


final LoadableDetachableModel<List<BufferLogs>> bufferLogList = new LoadableDetachableModel<List<BufferLogs>>() {
            @Override
            protected List<BufferLogs> load() {
                return bufferLogsService.getAllLogs();
            };

        };


final PageableListView<BufferLogs> listViewForLogTable = new PageableListView<BufferLogs>("listViewForLogTable", bufferLogList,10) {

            @Override
            protected void populateItem(ListItem<BufferLogs> item) {

                final BufferLogs mobject = item.getModelObject();

                SimpleDateFormat formatter = new SimpleDateFormat("dd-M-yyyy");
                String date = formatter.format(mobject.getcDate());

                formatter = new SimpleDateFormat("HH:mm:ss");
                String time = formatter.format(mobject.getcDate());

                item.add(new Label("id", String.valueOf(mobject.getRowNum()) ));
                item.add(new Label("lineName", mobject.getLineName()));
                item.add(new Label("date", date));
                item.add(new Label("time", time));
                item.add(new Label("short", String.valueOf(mobject.getShortBuffer())));
                item.add(new Label("full", String.valueOf(mobject.getFullBuffer())));
                item.add(new Label("bufferOffset", String.valueOf(mobject.getBufferOffset() == null ? "" : mobject.getBufferOffset() ) ));

            }

        };

        listViewContainerForLogTable.add(listViewForLogTable);


AjaxButton submit = new AjaxButton("submit") {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                target.addComponent(listViewContainerForLogTable);
            }

            @Override
            protected void onError(AjaxRequestTarget target, Form<?> form) {
                target.addComponent(feedbackPanel);

            }

        };

listViewContainerForLogTable.add(navigator);
        add(listViewContainerForLogTable);

That JS code is 10 year old from pre- Wicket 1.6.该 JS 代码从 Wicket 1.6 之前的版本开始已有 10 年的历史。 You should upgrade to Wicket 9 (or Wicket 8 at minimum).您应该升级到 Wicket 9(或至少 Wicket 8)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM