Не уверен, что вы пытаетесь достичь ...
Хотите заменить текущие 50 документов новым набором из 50 документов или оставить старые для прокрутки?.
Если первое, то твой подход не похож на первый, о котором я бы подумал ...
private class MyPanel extends Panel {
private ListView lv;
public MyPanel(String id) {
super(id);
List list = new ArrayList();
lv = new ListView("lv", list) {
@Override
protected void populateItem(ListItem item) {
//display the document
}
};
add(lv);
add(new AjaxButton("next", new Form("form")) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
//retrieve the next Batch
List newList = new ArrayList();
lv.setModelObject(newList);
target.addComponent(MyPanel.this);
}
});
}
}
Что-то смутно подобное пришло бы мне в голову.Вы можете «прокручивать» взад-вперед, как раньше.
Кроме этого, я бы подумал о DataView вместо ListView, поскольку он поддерживает нумерацию страниц из коробки.
В качестве последней мысли, если вы просто удалите ссылки на свой ListView, не добавляя их (или любой окружающий контейнер, поскольку ретрансляторы не могут быть добавлены в AjaxRequestTargets), это даст gc возможность очистить эти объекты.но тогда вы должны позаботиться о нулевых ссылках при перезагрузке ...