Wicket - 在页面呈现后将数据加载到表格中
问题描述:
在我的wicket应用程序中,我有一个数据表。数据提供者附加到它并从REST服务加载内容。这个通话需要很多时间(〜20秒)。Wicket - 在页面呈现后将数据加载到表格中
那么,有没有办法使用空表格加载页面,然后用服务中的数据渲染后再填充它?
我想过呈现页面后重新连接或重新加载数据提供程序:
onAfterRender()
但我仍然不知道该怎么做了数据提供器。
答
你可以看看AjaxLazyLoadPanel
,它显示了一个小的加载图标作为组件加载时的占位符。
add(new AjaxLazyLoadPanel("table") {
@Override
public Component getLazyLoadComponent(String markupId) {
return new MyLongLoadingTable(markupId);
}
});
另一种解决方案:显示空表,并定期检查数据库的操作来完成,并更新表时,所有的数据采集已经完成。 AbstractAjaxTimerBehavior
是一个很好的实用工具。像这样:
add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
@Override
protected void onTimer(AjaxRequestTarget target) {
if (isDataLoaded()) {
stop(target);
target.add(table);
}
}
});
使用第一个。完善。谢谢! –