如何使PrimefacesTree组件的叶子成为Commandlink



我正在生成Primefaces树组件作为

root = new DefaultTreeNode("Root", null);
List<String> categories = reportService.getCategories();
for (String categoryName : categories) {
TreeNode Rnode = new DefaultTreeNode(categoryName, root);
List<String> reportNames = reportService
.getReportNames(categoryName);
for (String reportName : reportNames) {
Rnode.getChildren().add(new DefaultTreeNode(reportName));
}
}

Xhtml看起来像这个

<p:tree value="#{reportManagedBean.root}" var="node">
<p:treeNode>
<p:outputLabel value="#{node}"/>
</p:treeNode>
</p:tree>

如何使叶节点仅为CommandLink,其余为OutputLabel?

您可以使用nodeVar属性访问当前TreeNode实例,并确定当前节点是否为叶:

<h:form>
<p:tree value="#{reportManagedBean.root}" var="data" nodeVar="node">
<p:treeNode>
<h:outputLabel value="#{data}"
rendered="#{not empty node.children}" />
<h:commandLink value="Do something: #{data}"
rendered="#{empty node.children}" />
</p:treeNode>
</p:tree>
</h:form>

两个建议:

  1. 与其使用Rnode.getChildren().add(new DefaultTreeNode(reportName));,不如使用new DefaultTreeNode(reportName, RNode)
  2. 要使叶子成为CommandLink,您需要条件语句。因此,如果对象是子对象,则可以使用nodeVar或使用一个属性进行标记

相关内容

  • 没有找到相关文章

最新更新