我正在使用 jsTree jQuery 插件来绘制一棵树。 当用户单击节点时,包含节点 id 的 ajax 请求将发送到服务器。
在我的回复中,我生成了这样的 html 片段(这是在单独的 servlet 中完成的):
<li id="node_id_1"><a href="foobar">Child item 1</a></li>
<li id="node_id_2"><a href="foobar">Child item 2</a></li>
<li id="node_id_3"><a href="foobar">Child item 3</a></li>
<li id="node_id_4"><a href="foobar">Child item 4</a></li>
<li id="node_id_5"><a href="foobar">Child item 5</a></li>
此项目将绘制在所选节点下。
问题是:我应该使用 href 属性什么值来引用 wicket 页面? IE。我需要带有一些参数的指向 MainPage 类的链接。
最佳答案
你想要的是 RepeatingView或ListView返回一些 BookmarkablePageLink对象:
这是一个示例组件:
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>
我使用了只有 ID 和名称的 MyDomainObject
类型。显示名称,链接到 ID。基本上,您可以将任何可序列化参数添加到 BookmarkablePageLink
中,然后使用 Page.getPageParameters() 解析您链接到的页面中的参数。方法。
关于java - Wicket + jsTree,ajax 响应中的链接生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3608263/