0

我在一个 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);
   }
}
4

1 回答 1

0

找到了解决方案。这很简单,但很困难。删除one.xhtml<h:head></h:head>中不必要的标签,它正在重新加载已加载且非常可用的所需 js 文件。只需将标签始终保留在主页中。这里是index.xhtml<h:head></h:head>

于 2013-04-01T18:24:17.770 回答