[英]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.