初始化树时扩展Wickets TreeTable节点

时间:2010-07-19 12:56:58

标签: java wicket expand treenode treetable

我对wicket很新,我正在尝试创建一个简单的wicket树,其中包含有关邮件列表的信息。此邮件列表与某个字母有关。

  • MailingListDto 1
    • 用户1
    • 用户2
  • MailingListDto 2
    • 用户3
    • 用户4

如果我们正在编辑现有的字母,则会提取与该字母相关的邮件列表into mailingListCollection,并且应选择并展开树上的相应节点。出于某种原因,我似乎没有得到这方面的工作。

所选节点和扩展节点在UI中不显示为选中状态,也未在UI中展开,但如果我以编程方式查看选定节点(例如onAfterRender()中)并记录选定和扩展值,则会扩展和选择节点

    tree = new TreeTable("treeTable", treeModel, treeColumns) {
            @Override
            public void onBeforeRender() {
                super.onBeforeRender();
                if (!mailingListCollection.isEmpty()) {
                    for (MailingListDto mailingList : mailingListCollection) {
                        tree.getTreeState().expandNode(mailingList);
                        tree.getTreeState().selectNode(mailingList, true);
                    }
                }
                tree.updateTree();
            }

            @Override
            protected void onAfterRender() {
                super.onAfterRender();
                if (LOG.isDebugEnabled()) {
                    LOG.debug("onAfterRender: " + tree.getTreeState().getSelectedNodes().size());
                    for (Object obj : tree.getTreeState().getSelectedNodes()) {
                        LOG.debug(tree.getTreeState().isNodeSelected(obj) + "  " + tree.getTreeState().isNodeExpanded(obj));
                    }
                }
            }
    };

    tree.setRootLess(true);
    tree.getTreeState().setAllowSelectMultiple(true);
    add(tree);

2 个答案:

答案 0 :(得分:0)

仅展开树的根节点:

Object rootObj = myTree.getModelObject().getRoot();
myTree.getTreeState().expandNode(rootObj);

要扩展根节点的第一个子节点,请将以下行添加到前一行:

myTree.getTreeState().expandNode(myTree.getModelObject().getChild(rootObj, 0));

请注意,您必须展开“目标”节点的所有父节点,否则屏幕上的目标节点将因为折叠的父节点而被隐藏。

答案 1 :(得分:-1)

wicket 1.5.10

wicket 6

查看源代码。在类FooExpansion.java中是一个方法expandAll()。

FooExpansion.java用于私有类FooExpansionModel.java用于AdvancedTreePage.java。

这是一个简单的解决方案,当你的树(在AdvancedTreePage.java中)时,可能是:

FooExansionModel model = new FooExpansionModell()

tree = createTree(provider,model);

((FooExpansion)model.getObject())expandAll();