0

私はウィケットにかなり慣れていないので、メーリングリストに関する情報を保持する単純なウィケットツリーを作成しようとしています。このメーリングリストは、ある手紙に関連しています。

  • メーリングリストDto 1
    • ユーザー 1
    • ユーザー 2
  • メーリングリストDto 2
    • ユーザー 3
    • ユーザー 4

既存のレターを編集している場合、そのレターに関連するメーリングリストが取得さinto mailingListCollectionれ、ツリー上の対応するノードが選択されて展開されます。何らかの理由で、私はこれが機能していないようです。

選択および展開されたノードは、UI で選択または展開されたようには表示されませんが、たとえばプログラムで選択されたノードを調べてonAfterRender()、選択および展開された値をログに記録すると、ノードが展開されて選択されます。

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

            @オーバーライド
            保護されたボイド 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(真);
    tree.getTreeState().setAllowSelectMultiple(true);
    追加 (ツリー);
4

2 に答える 2

0

ツリーのルート ノードのみを展開するには:

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

ルート ノードの最初の子も展開するには、前の行に次の行を追加します。

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

「ターゲット」ノードのすべての親ノードを展開する必要があることに注意してください。そうしないと、親が折りたたまれているため、画面上でターゲット ノードが非表示になります。

于 2012-09-07T13:17:01.010 に答える
-1

ウィケット 1.5.10

ウィケット 6

ソースコードを見てください。クラス FooExpansion.java には、メソッド expandAll() があります。

FooExpansion.java はプライベート クラスで使用されます。 FooExpansionModel.java は AdvancedTreePage.java で使用されます。

したがって、(AdvancedTreePage.java で) ツリーを初期化するときの簡単な解決策は次のようになります。

FooExansionModel モデル = new FooExpansionModel()

ツリー = createTree(プロバイダー、モデル);

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

于 2014-02-14T20:08:31.460 に答える