0

私はツリーを作成しました。私の場合、ツリーのすべてのレベルはオブジェクトのタイプを表しているので、(レベル 1:ファミリー、レベル 2:TestList、レベル 3:テスト) を持っています。選択したノードのタイプを取得したい木 :

if (selectedNode != null) {
      if (selectedNode instanceof Family) {
         pFamily = (Family)selectedNode;
          new DefaultTreeNode(newSuite.getName(),selectedNode); 
      } else if (selectedNode instanceof TestList) {
         pFamily = (((TestList)selectedNode).getFamilyFromModel());
          new DefaultTreeNode(newSuite.getName(),selectedNode.getParent()); 
      } else if (selectedNode instanceof Test) {
         pFamily = (((Test)selectedNode).getTestListFromModel().getFamilyFromModel());
          new DefaultTreeNode(newSuite.getName(),selectedNode.getParent().getParent()); 
      }

しかし、実行時にこの値 DefaultTreeNode i を取得するたびに:

system.out.println( selectedNode.getClass());

(選択したノードのクラス タイプ)

ツリーにタイプ Family のノードを追加する方法は次のとおりです。

List <Family> familyList =DataLoader.getCurrentProject().getFamilyListFromModel();
    for (int i=0 ;i<familyList.size();i++)
    {   family=familyList.get(i);
        familyNode= new DefaultTreeNode(family.getName(), testPlanNode);  }

これを行うことは可能ですか?

よろしくお願いします

4

2 に答える 2

3

これは、あなたselectedNodeが実際にDefaultTreeNode.

必要なのは、ノードが保持しているデータselectedNode.getData()であり、 を呼び出すことでそれを行うことができます。取得した値は、比較する必要がある値です。


ノードを構築する方法では、常に が得られます。これは、ファミリーの名前であるを保持するように指示しているためStringです。Stringnew DefaultTreeNode(family.getName(), testPlanNode)

代わりに、次のことを行う必要がnew DefaultTreeNode(family, testPlanNode)あります。

<p:tree var="node">
    <p:treeNode>
        <h:outputText value="#{node.name}"/>
    </p:treeNode>
</p:tree>

そして、ノードが保持しているあらゆる種類のオブジェクトにgetName()メソッドがあることを確認してください。インターフェースがいいでしょう。


PrimeFaces のドキュメントを読んで、私たちの親友として使用してください。

于 2012-09-18T20:01:39.667 に答える
3

この変更を行うだけです:

 <p:treeNode  value="#{node}">
      <h:outputText value="#{node}" />
 </p:treeNode>

選択したノードをオブジェクトの形式で取得するには、次のようにします。

 Family family =(Family)(selectedNode.getData());
于 2012-09-19T13:34:47.300 に答える