java - Wicket - 树 + jquery-treeview

标签 java jquery treeview tree wicket

我是 wicket 和 jquery 的新手,我想在我的 wicket 页面中有一棵简单的树,链接到 jquery-treeview。 (“简单”,我的意思是一个根,一些 child 可能有一些 child ,......)。

每个节点都包含一个带有其名称的标签和一些链接或按钮。

我发现的一切看起来都很难...... 我喜欢“RecursivePanel”示例,但我无法使其与 jquery-treeview 一起使用。

您对下面的解决方案有何看法。我不太喜欢分成两个组件的事实,但我没有找到任何好的解决方案。

所以树由 2 个组件组成。

  • NodePanel,包含节点名称和 NodeChildrenPanel 到
  • 中。
  • NodeChildrenPanel,如果它是叶子,则包含一个标签,或者每个子项又包含一个 NodePanel。

NodePanel.html

<wicket:panel>
  <li>
    <span wicket:id="name"></span>
    <span wicket:id="children"></span>
  </li>
</wicket:panel>

NodePanel.java

class NodePanel extends Panel {
    Node(String id, Node node) {
        super(id);

        setRenderBodyOnly(true);

        add(new Label("name", node.getName()));
        add(new NodeChildrenPanel("children", node));
    }
}

NodeChildrenPanel.html

<wicket:panel>
  <ul>
    <li wicket:id="children"></li>
  </ul>
</wicket:panel>

NodeChildrenPanel.java

class NodeChildrenPanel extends Panel {
    public NodeChildrenPanel(String id, Node node) {
        super(id);

        setRenderBodyOnly(true);

        if (node.isLeaf()){
            Label l = new Label("children");
            l.setVisible(false);
            add(l);
        } else {
            RepeatingView rv = new RepeatingView("children");

            for (Node child : node.getChildren()){
                if (child.isLeaf()){
                        rv.add(new Label(rv.newChildId(), child.getName()));
                } else {
                        rv.add(new NodePanel(rv.newChildId(), child));
                }
            }

            add(rv);
        }       
 }

}

在页面中,

根节点被创建成

     <ul id="my_tree_ul">
        <div wicket:id="my_tree"></div>
     </ul>
    
    <小时/>
    add(new NodePanel("my_tree", getSession().getMyRootNode());
    

    并且

      链接到 jquery-treeview。

      public void renderHead(IHeaderResponse response) {
          String js = "$(document).ready(function(){ $(\"#my_tree_ul\")
                           .treeview({animated: \"fast\",       
                                });
                       });");
      
          response.renderJavaScript(js, null);
      }
      

      有没有更好的解决办法?

最佳答案

关于java - Wicket - 树 + jquery-treeview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073609/

相关文章:

c# - 如何在 C# Winforms 应用程序中创建这样的多列 TreeView ?

java - 重新附加 TextWatcher 后将光标移动到多行 EditText 中的下一行

java - 我们如何在一个 Spring 中创建多个 IOC 容器?

c# - 将分层 TreeView 绑定(bind)到字典

javascript - 如果元素具有确切的属性和值,则在 jquery 中执行某些操作

javascript - D3 : Cannot append simple path to svg container

c# - 如何在 TreeView 中展开新添加的节点

java - 将运算符从 double 转换回 char 后,如何使用它?

java - 如何让Android应用程序每天从服务器检索数据?

jquery - 页脚高度 100% 在垂直居中的页面上