请考虑以下丰富的人脸树示例:
<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/