2010-08-31 26 views
0

我正在使用jsTree jQuery插件绘制树。 当用户点击一个节点时,一个包含节点ID的ajax请求被发送到服务器。Wicket + jsTree,在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页面的值?即我需要一些参数指向MainPage类的链接。

回答

1

你想要的是一个RepeatingViewListView返回一些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()方法解析链接到的页面中的参数。