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); 
     } 

    } 

}); 
+0

使用第一个。完善。谢谢! –