我有一个显示一些面板的 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。也就是说,事实上,如果列表被扩展,则为“[-]”,否则为“[+]”。我通过设置它的可见性来“展开”/“折叠”ListView .setVisible(...)
。
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>
<wicket:message key="examsHeadingInOverviewSignedUp">Exams - Signed Up</wicket:message>
</h1>
<span wicket:id="examLVsu"> <span wicket:id="exam1"></span></span>
</wicket:container>
我现在的问题是单击链接时没有刷新 MarkupContainer 。什么都没有发生,但是当我重新加载页面时,一切看起来都如预期的那样。我搜索了类似的问题,但我无法找到我的错误。