java - 富人脸树问题

标签 java jsf richfaces

请考虑以下丰富的人脸树示例:

  <rich:tree switchType="ajax">
<rich:treeNodesAdaptor id="officeNodeAdaptor" nodes="#{officesBean.offices}" var="office" >
      <rich:treeNode changeExpandListener="#{office.loadEmplyeesIfNeeded}" >
          <h:outputText value="#{office.name}" />
      </rich:treeNode>
<rich:treeNodesAdaptor id="employeeNodeAdaptor" nodes="#{office.employees}" var="employee">
       <rich:treeNode>
           <h:outputText value="#{employee.name}" />
       </rich:treeNode>
</rich:treeNodesAdaptor>

这是表示“Offices --> Employees”数据结构的示例树。 我想以惰性方式加载员工 - 所以我引入了 loadEmplyeesIfNeeded 扩展监听器。 除了一件事,一切都很好。员工在办公室节点展开后加载。所以当树被渲染时,所有办公室都没有任何员工并被渲染为叶子。当然叶子不能展开......

让长存短。有什么方法可以设置节点应该呈现为节点(有可能扩展)尽管没有 child ? 最好的情况是 rich:treeNode 有一些像 isNode 这样的属性,但它没有..

顺便说一句我可以通过在办公室初始化时向每个办公室添加一名假员工来解决这个问题。但这不是很好的解决方法......

在此先感谢您的帮助。

最佳答案

不过有点晚了。谁知道。

您可以像我一样扩展 org.richfaces.model.TreeNodeImpl。

   public class RichTreeNodeImpl extends org.richfaces.model.TreeNodeImpl {

       private boolean treatAsNode;

       public boolean getTreatAsNode() {
         return treatAsNode;
       }

       public void setTreatAsNode(boolean treatAsNode) {
         this.treatAsNode = treatAsNode;
       }

       @Override
       public boolean isLeaf() {
           if (this.treatAsNode)
              return false;
           else
              return super.isLeaf();
       }
   }

关于java - 富人脸树问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276587/

相关文章:

javascript - 动态创建Primefaces折线图产生JS 'Unexpected Identifier'错误并且没有图表

jquery - 丰富 :jQuery within ui:composition

jsf - 显示开/关 HTML 的不同区域

java - 扩展数据表和DataScroller

java - 使用 JSch 运行 here-doc 命令

java - 使用 jar 作为资源存档的简单方法

java - Guava 中是否有对应的不可变枚举映射?

javascript - 如何停止 JSF 重新加载页面 "onclick"?

c# - 对于没有函数但用于存储数据的类,正确的行话是什么

jsf - 选择如何使用 JSF 将参数传递给目标 bean/页面