如何从辅助bean突出显示primefaces树节点

时间:2011-04-07 05:28:18

标签: jsf-2 primefaces

我正在使用primefaces树组件。树的上下文菜单(添加节点,编辑节点,删除节点)。执行某些操作后,我需要刷新树,然后突出显示添加或编辑的节点。

这是我的代码。

的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实现Serializable {

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 个答案:

答案 0 :(得分:1)

Primefaces p:treeNode有一个属性styleClass。您可以从辅助bean动态设置它。视图看起来像:

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

然后使用get / set方法将成员styleClass添加到TreeBean,该方法返回表示样式类的字符串:

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

不要忘记将样式类添加到css中。

答案 1 :(得分:1)

除非将您声明为 selection =“#{treeBean.selectedNode}”的selectedNode设置为null,否则它已被选中,您唯一需要做的就是更新来自触发组件的树组件;在你的情况下它是:

<p:menuitem update=":yourForm:pTree"   /*rest of the stuff*/    />