Java Wicket正在替换ListView中的项
我想在单击按钮时更改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
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);