我在一个 xhtml 中使用 p:tree,它动态地包含在另一个 xhtml 的 tabview 中。当我们交替更改选项卡时,树扩展不起作用。我无法通过单击节点旁边的图标来展开树。
注意:或者它不起作用。仅当 index.xhtml 中的 tabview 的 dynamic="true" 和 cache="false" 时才会出现问题。下面是完整的代码,使用该代码可以轻松重现该场景。
当我在项目的许多地方使用 p:tree 时,如果这是一个错误,我要求任何人至少提供一个临时解决方法。我已经在 primefaces 论坛上发布了这个。我在 Tomcat 7.0 上使用 Primefaces 3.5 和 JSF
索引.xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<p:tabView dynamic="true" cache="false">
<p:tab title="One">
<ui:include src="/one.xhtml" />
</p:tab>
<p:tab title="two" />
</p:tabView>
</h:body>
</html>
一个.xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<p:tree widgetVar="treeStructure" value="#{treeBean.root}" var="node" selectionMode="single" id="tree">
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
</h:body>
</html>
树豆.java
@ManagedBean
@SessionScoped
public class TreeBean {
private TreeNode root;
public TreeNode getRoot() {
return root;
}
public void setRoot(TreeNode root) {
this.root = root;
}
public TreeBean() {
root = new DefaultTreeNode("Root", null);
TreeNode node0 = new DefaultTreeNode("Node 0", root);
TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
}
}