Wicket延迟加载ListView

Wicket延迟加载ListView,wicket,Wicket,是否可以在Wicket中延迟加载ListView? 这对我来说意味着在populateItem中,我可以加载并显示项目0,当呈现项目0时,然后进入项目1。目前,我必须等到在populateItem内部处理所有项,如RobAu所述,您可以使用AjaxLazyLoadPanel(wicket扩展)实现此目的,并且在编码中的更改最小。让我们考虑你把项目作为模型。 List<Item> itemList = new ArrayList<>(); i

是否可以在Wicket中延迟加载
ListView

这对我来说意味着在
populateItem
中,我可以加载并显示
项目0
,当呈现
项目0
时,然后进入
项目1
。目前,我必须等到在
populateItem

内部处理所有
项,如RobAu所述,您可以使用
AjaxLazyLoadPanel
(wicket扩展)实现此目的,并且在编码中的更改最小。让我们考虑你把<代码>项目<代码>作为模型。
        List<Item> itemList = new ArrayList<>();
        itemList.add(new Item());
        itemList.add(new Item());

        ListView<Item>itemListView = new ListView<Item>("itemListView",ItemList) {
            @Override
            protected void populateItem(final ListItem<Item> listItem) {
            listItem.add(new AjaxLazyLoadPanel("ViewItemPanel") {
                @Override
                public Component getLazyLoadComponent(String s) {
                     // Add a seperate panel if you are listing out many values
                    return new ItemPanel(s,listItem.getModelObject());
                }
            });
            }
        };
        add(itemListView);
List itemList=new ArrayList();
添加(新项());
添加(新项());
ListViewitemListView=新建ListView(“itemListView”,ItemList){
@凌驾
受保护的void populateItem(最终列表项列表项){
添加(新的AjaxLazyLoadPanel(“ViewItemPanel”){
@凌驾
公共组件getLazyLoadComponent(字符串s){
//如果要列出许多值,请添加一个单独的面板
返回新的ItemPanel(s,listItem.getModelObject());
}
});
}
};
添加(itemListView);

ItemPanel
如果必须显示多个组件,则可以将其分离

正如RobAu所提到的,您可以使用
AjaxLazyLoadPanel
(wicket extension)来实现这一点,只需对编码进行最小的更改。让我们考虑你把<代码>项目<代码>作为模型。
        List<Item> itemList = new ArrayList<>();
        itemList.add(new Item());
        itemList.add(new Item());

        ListView<Item>itemListView = new ListView<Item>("itemListView",ItemList) {
            @Override
            protected void populateItem(final ListItem<Item> listItem) {
            listItem.add(new AjaxLazyLoadPanel("ViewItemPanel") {
                @Override
                public Component getLazyLoadComponent(String s) {
                     // Add a seperate panel if you are listing out many values
                    return new ItemPanel(s,listItem.getModelObject());
                }
            });
            }
        };
        add(itemListView);
List itemList=new ArrayList();
添加(新项());
添加(新项());
ListViewitemListView=新建ListView(“itemListView”,ItemList){
@凌驾
受保护的void populateItem(最终列表项列表项){
添加(新的AjaxLazyLoadPanel(“ViewItemPanel”){
@凌驾
公共组件getLazyLoadComponent(字符串s){
//如果要列出许多值,请添加一个单独的面板
返回新的ItemPanel(s,listItem.getModelObject());
}
});
}
};
添加(itemListView);

ItemPanel
如果必须显示多个组件,则可以将其分离

您可以使用
AjaxLazyLoadPanel
s来渲染项目?您可以使用
AjaxLazyLoadPanel
s来渲染项目?在这一过程中,我获得了奇怪的结果,例如首先渲染字符串和标签,然后再渲染图像,这破坏了我网站的流程。在这一过程中,我获得了奇怪的结果,例如,首先渲染字符串和标签,然后渲染图像,这会中断我网站的流程。