いくつかのパネルを表示する 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 が更新されないことです。何も起こりませんが、ページをリロードすると、すべてが期待どおりに見えます。同様の問題を検索しましたが、私の間違いを見つけることができませんでした。