Java Wicket正在替换ListView中的项

Java Wicket正在替换ListView中的项,java,listview,wicket,Java,Listview,Wicket,我想在单击按钮时更改listview的数据 这就是我目前所做的: final PageableListView<Users> listview = new PageableListView<Users>("rows", displayList, 10) { //.... protected void populateItem(final ListItem<Users> item) { item.add(new Label("us

我想在单击按钮时更改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);

我如何解决这个问题

因为我无法通过
target.add(listview)更新listview
我添加了一个
WebMarkupContainer
如下:

final WebMarkupContainer datacontainer = new WebMarkupContainer("data");
datacontainer.setOutputMarkupId(true);
add(datacontainer);
现在我可以更新
onClick
方法:

target.add(datacontainer);
这很好,问题解决了


但是我仍然不清楚为什么替换孩子不起作用

我会将整个列表添加到目标中,例如
target.add(listview)。更新部分列表时存在一些已知的ajax IE问题。我已经尝试过了,但ListView无法替换(据我所知):
此组件是一个重复程序,无法通过ajax直接重新绘制。而是将其父容器或另一个标记容器添加到层次结构的更高位置。
使用#addChildren()将所有标签添加到AjaxRequestTarget。请注意,ListItems通过父中继器的索引获取其模型。列表中没有匹配项的ListItem将抛出和IllegalArgumentException。listview的子项已从上一个列表中呈现,将它们添加到目标将无助于创建新的子项。
target.add(datacontainer);