您想要的是返回一些BookmarkablePageLink对象的RepeatingView或ListView :
这是一个示例组件:
public class JsTree extends Panel{
private static final long serialVersionUID = 1L;
public JsTree(final String id, final IModel<List<MyDomainObject>> model){
super(id);
this.add(new ListView<MyDomainObject>("list", model){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final ListItem<MyDomainObject> item){
MyDomainObject modelObject = item.getModelObject();
final Map<String, String> params =
Collections.singletonMap("id", modelObject
.getObjectId());
item.add(
new BookmarkablePageLink<Void>(
"link", MyPage.class,
new PageParameters(params)
).add(new Label("label",modelObject.getName()))
).setOutputMarkupId(true);
}
});
}
}
以及相应的 HTML:
<html>
<body>
<wicket:head></wicket:head>
<wicket:panel>
<ul class="jsTree">
<li wicket:id="list">
<a href="#" wicket:id="link">
<wicket:container wicket:id="label" />
</a>
</li>
</ul>
</wicket:panel>
</body>
</html>
我使用了MyDomainObject
一种只有 id 和名称的类型。名称显示,id 链接到。基本上,您可以将任何可序列化参数添加到 a BookmarkablePageLink
,然后使用Page.getPageParameters()方法从链接到的页面解析参数。