我正在使用primefaces树组件。树的上下文菜单(添加节点,编辑节点,删除节点)。执行某些操作后,我需要刷新树,然后突出显示添加或编辑的节点。
这是我的代码。
<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实现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 ........");
}
}
答案 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*/ />