Wicket - 在呈现页面后将数据加载到表中

时间:2017-05-05 05:51:28

标签: java ajax wicket

在我的wicket应用程序中,我有一个数据表。数据提供程序附加到它并从REST服务加载内容。这个电话需要很多时间(约20秒)。

那么,有没有办法用空表加载页面,然后在用服务中的数据渲染后重新填充它?

我想在渲染页面后重新附加或重新加载dataprovider:

onAfterRender()

但我仍然不知道如何使用数据提供者。

1 个答案:

答案 0 :(得分:3)

您可以查看AjaxLazyLoadPanel,它会在加载Component时显示一个小的加载图标作为占位符。

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

    }

});