1

我正在使用检票口更新列表。列表将被更新(发出 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')");
...
4

1 回答 1

2

使用 Wicket 的 AJAX 功能,您可以替换<ul>标记及其子项的完整 DOM 节点。因此 JQuery 不能将其识别<ul>为列表视图。根据this question的答案,您需要调用listview构造函数而不是刷新:

target.appendJavaScript("$('ul').listview()");
于 2012-04-16T10:00:07.667 回答