java - 通过 ajax/collapsible ListView 刷新 wicket 容器

标签 java ajax listview refresh wicket

我有一个 ListView,它显示一些面板。因为这个 ListView 可能很长,所以我想让它可折叠。

为此,我添加了一个 WebMarkupContainer:

final WebMarkupContainer wmc = new WebMarkupContainer("listViewContainer");
wmc.setOutputMarkupId(true);
this.add(wmc);

这就是 ListView 的创建方式:

final ListView<String> examListViewSignedUp = new ListView<String>("examLVsu", signedUpExams) {
    private static final long serialVersionUID = -2828116887162006658L;
    protected void populateItem(ListItem<String> item) {
        String examId = item.getModelObject();
        item.add(new ExamPanel("exam1", examId));
    }

};

wmc.add(examListViewSignedUp);

最后,我添加 AjaxLink。也就是说,事实上,如果列表已展开,则为“[-]”,否则为“[+]”。我通过 .setVisible(...) 设置 ListView 的可见性来“展开”/“折叠”ListView。

final Model<String> sulink = new Model<String>(esuclt);
wmc.add(new AjaxLink("overviewCollapseLinkSignedUp") {
    private static final long serialVersionUID = 8603181768552484977L;
    @Override
    public void onClick(AjaxRequestTarget target) {
        if (examListViewSignedUp.isVisible()) {
            examListViewSignedUp.setVisible(false);
            sulink.setObject("[+]");
        } else {
            examListViewSignedUp.setVisible(true);
            sulink.setObject("[-]");
        }
        target.add(wmc);
    }
}.add(new Label("oclt1", sulink)));

标记:

<wicket:container wicket:id="listViewContainer">
        <h1 class="ocl">
            <a wicket:id="overviewCollapseLinkSignedUp" href="#"><span wicket:id="oclt1">[?]</span></a>&nbsp;
            <wicket:message key="examsHeadingInOverviewSignedUp">Exams - Signed Up</wicket:message>
        </h1>
        <span wicket:id="examLVsu"> <span wicket:id="exam1"></span></span>
</wicket:container>

我现在的问题是单击链接时 MarkupContainer 没有刷新。什么也没发生,但是当我重新加载页面时,一切看起来都如预期。我搜索了类似的问题,但找不到我的错误。

最佳答案

您无法更新<wicket:container>是通过 Ajax 进行的,因为它们不存在于最终标记中。

使用正常的<div wicket:id="listViewContainer">相反。

关于java - 通过 ajax/collapsible ListView 刷新 wicket 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18429644/

相关文章:

android - Listview在单击按钮时播放两个音频文件

c# - 在 ListView 中双击 Item 时获取 SubItem 值

java - 如何在jpanel上延迟显示图片?

java - Java 中用于自定义对象列表的 Foreach 循环

javascript - HTML 选择下拉菜单 ID 未传递给 Javascript 函数 getelementbyid 值为 null

python - 识别 Flask 请求是否来自 JavaScript

用户闲置一段时间后 Javascript 被禁用

java - 在 Java 中实现请求限制的任何开箱即用的方法?

java - JPA 实体是否存储对实体管理器的引用?

java - Android 中广播接收器的奇怪问题