我想在Button Click上更改listview的数据。
这就是我现在所做的事情:
final PageableListView<Users> listview = new PageableListView<Users>("rows", displayList, 10) {
//....
protected void populateItem(final ListItem<Users> item) {
item.add(new Label("username").setOutputMarkupId(true));
// .. other fields
}
}
final IndicatingAjaxFallbackLink<MyPanel> sublist = new IndicatingAjaxFallbackLink<MyPanel>("sublist") {
public void onClick(AjaxRequestTarget target) {
displayList = // get new list
listview.setList(displayList);
target.addChildren(listview, Label.class);
}
};
add(sublist);
如果新列表与旧列表的大小完全相同,则此方法有效。在任何其他情况下,我得到
Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
如何解决此问题?
答案 0 :(得分:3)
因为我无法通过target.add(listview);
更新列表视图,所以我添加了WebMarkupContainer
,如下所示:
final WebMarkupContainer datacontainer = new WebMarkupContainer("data");
datacontainer.setOutputMarkupId(true);
add(datacontainer);
现在我可以更新onClick
方法:
target.add(datacontainer);
这很好用 - 问题解决了。
但为什么更换孩子不起作用仍然不清楚