如何获取PrimeFaces树节点的根?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取PrimeFaces树节点的根?相关的知识,希望对你有一定的参考价值。
我有一个html页面从控制器获取TreeNode。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition>
<pa:panelTree styleClass="corps-grade-list"
treeContent="#{affectationController.getDossierEnBrefAffectations()}"
rendered="#{agentModele.estMigre}" />
</ui:composition>
</html>
这样,affectationController.getDossierEnBrefAffectations()
是一个返回这个树节点的函数。我想得到这棵树的根节点。
我尝试使用treeContent="${affectationControleur.consulterDossierEnBrefAffectations.children[0]}"
,因为TreeNode类具有getChildren函数。然而,它不是EL的正确语法。
答案
如果您尚未扩展DefaultTreeNode
类或实现接口,请执行此操作。现在您只需将此方法添加到树节点实现中:
public TreeNode getRoot() {
if (getParent() == null) {
return this;
}
TreeNode root = getParent();
while (root.getParent() != null) {
root = root.getParent();
}
return root;
}
这允许您使用:#{bean.treeNode.root}
。
如果您无法更改模型,可以在bean中添加类似的东西:
public TreeNode getRoot(TreeNode node) {
if (node.getParent() == null) {
return node;
}
TreeNode root = node.getParent();
while (root.getParent() != null) {
root = root.getParent();
}
return root;
}
这允许您使用:#{bean.getRoot(treeNode)}
。
以上是关于如何获取PrimeFaces树节点的根?的主要内容,如果未能解决你的问题,请参考以下文章