我正在使用wicket更新列表。该列表将被更新(发出ajax请求,发送响应并更新列表)。到目前为止,一切都还可以。
更新列表后,我调用javascript / jquery方法$('ul')。listview('refresh')来(重新)添加所有必要的jquery样式。但这不会发生。 (更新的)列表将显示为无样式。
有什么想法,我缺少什么?
html部分:
...
<ul id="sitzungenList" wicket:id="sitzungenListContainer" data-role="listview" data-divider-theme="b" data-inset="true">
<li wicket:id="sitzungen" data-theme="c">
<a href="#page2" data-transition="slide">
<span wicket:id="sitzungName">[Sitzung]</span>
</a>
</li>
</ul>
...
java部分(列表的初始化):
...
final WebMarkupContainer sitzungenListContainer = new WebMarkupContainer("sitzungenListContainer");
sitzungenListContainer.setOutputMarkupId(true);
sitzungenForm.add(sitzungenListContainer);
final ListView<Meeting> sitzungenList = new ListView<Meeting>("sitzungen", meetingsService.getAll(Meeting.class)) {
@Override
protected void populateItem(ListItem<Meeting> listItem) {
listItem.add(new Label("sitzungName", listItem.getModelObject().getName()));
}
};
sitzungenListContainer.add(sitzungenList);
...
最后更新列表(在AjaxButton的onSubmit方法内):
...
sitzungenList.setList(meetingsService.getMeetings(sitzungenSearchParam));
target.add(sitzungenListContainer);
target.appendJavaScript("$('ul').listview('refresh')");
...
答案 0 :(得分:2)
使用Wicket的AJAX功能,您替换 <ul>
标记及其子标记的完整DOM节点。因此,JQuery不会将<ul>
识别为列表视图。根据{{3}},您需要调用listview构造函数而不是refresh:
target.appendJavaScript("$('ul').listview()");