Как выделить узел дерева простых лиц из базового компонента - PullRequest
0 голосов
/ 07 апреля 2011

Я работаю с компонентом дерева простых лиц.Для дерева есть контекстное меню (добавить узел, отредактировать узел, удалить узел).После выполнения некоторой операции мне нужно обновить дерево и затем выделить добавленный или отредактированный узел.

Это мой код.

index.xhtml

        <p:treeNode>
            <h:outputText value="#{node}" />
        </p:treeNode>
    </p:tree>
    <p:contextMenu for="pTree" id="cmenu">
        <p:menuitem value="Add topic as child" update="pTree, cmenu"
                    actionListener="#{treeBean.addChildNode}" />
         <p:menuitem value="Add topic Below" update="pTree, cmenu"
                    actionListener="#{treeBean.addTopicBelow}" />
         <p:menuitem value="Delete Topic" update="pTree, cmenu"
                    actionListener="#{treeBean.deleteNode}" />
    </p:contextMenu>

treeBean.java

открытый класс TreeBean реализует Сериализуемый {

private TreeNode root;

public TreeBean() {
    root = new DefaultTreeNode("Root", null);
    // GET the root nodes first L0
    List<TracPojo> rootNodes = SearchDao.getRootNodes111();
    Iterator it = rootNodes.iterator();

    while (it.hasNext()) {

        TracPojo t1 = (TracPojo) it.next();

        String tid = t1.getTopicID();

        TreeNode node1 = new DefaultTreeNode(t1, root);

    }


}
 public TreeNode getRoot() {
    return root;
 }


public void addChildNode(ActionEvent actionEvent) 
{

    List record = NewSearchDao.getRecord(selectedNode);

    Iterator it = record.iterator();
    while (it.hasNext()) {
        Object[] record1 = (Object[]) it.next();
        setParentID_dlg((String) record1[0]);
        setSortIndex((Integer) record1[2]);
    }

}

public void saveChilddNode() {
    System.out.println("Save as Child Node ........");

}

}

Ответы [ 2 ]

1 голос
/ 17 января 2014

Если вы не установите selectedNode, который вы объявляете как selection = "# {treeBean.selectedNode}" , к нулю, он уже выбран, и единственное, что вам нужно сделать, это обновить деревокомпонент из запускающего компонента;в вашем случае это:

<p:menuitem update=":yourForm:pTree"   /*rest of the stuff*/    />
1 голос
/ 07 апреля 2011

Primefaces p:treeNode имеет атрибут styleClass.Вы можете установить это динамически от вашего бина поддержки.Представление будет выглядеть следующим образом:

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

Затем добавьте элемент styleClass в TreeBean с помощью метода get / set, который возвращает строку, представляющую класс стиля:

public class TreeBean implements Serializable {
  private String styleClass;
  ...
  public String getStyleClass() {
    // your style selection logic here
  }
  ...
}

Не забудьтедобавить классы стилей к вашему CSS.

...