我得到以下结构,在html表格中显示可编辑的行
Panel
+ WebMarkupContainer - in HTML <tbody wicket:id="container">
+ ListView which for each item in the list does (in HTML this)
+ item.add(new PopTable1Row("Pop1Panel", popTable1Item, ComponentMode.EDIT));
+ PopTable1Row component contains
+ Form
+ some inputs and a 2 submit buttons (Save, Delete)
现在我想实现这一点,例如通过点击删除列表视图将AJAX像重新加载而不重新加载整个页面。 “删除”按钮从表中删除一行,因此一行应该消失。
我使用AjaxSelfUpdatingTimerBehavior实现了重新加载ListView:
WebMarkupContainer.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(5)));
每5秒刷新一次listView。
好的,但现在我想刷新例如删除按钮的onSubmit
中的listView。
在这里;问题是:如何做到这一点?
我尝试了onSubmit
:
this.getParent().getParent().getParent().getParent().render();
this.getParent().getParent().getParent().getParent().renderComponent();
但两者都不起作用。
答案 0 :(得分:4)
首先,你必须在你的listView中将outputId设置为true。因此Wicket将为list标签生成一个id,需要由ajax更新。
yourListView.setOutputMarkupId(真);
然后在你的onSubmit方法中告诉Wicket重绘列表。请注意,在示例中,保存按钮是AjaxLink,但您可以使用其他组件。
AjaxLink<Void> dltBttn = new AjaxLink<Void>("yourButtonId") {
public void onClick(AjaxRequestTarget target) {
// your stuff
if(target != null) {
// tells wicket to repaint your list
target.addComponent(yourListViewComponent);
}
}
}