如何获取PrimeFaces树节点的根?

问题描述 投票:0回答:1

我有一个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的正确语法。

primefaces tree
1个回答
1
投票

如果您尚未扩展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)}

© www.soinside.com 2019 - 2024. All rights reserved.