0

別のxhtmlのタブビューに動的に含まれるxhtml内で p:tree を使用しています。タブを交互に変更すると、ツリー展開が機能しません。ノードの横にあるアイコンをクリックしてもツリーを展開できません。

注:または、動作しません。この問題は、index.xhtml のタブビューで dynamic="true" および cache="false" の場合にのみ発生します。シナリオを簡単に再現できる完全なコードを以下に示します。

私はプロジェクトの多くの場所で p:tree を使用しているため、これがバグである場合は、少なくとも一時的な回避策を提供するようにお願いします。私はすでにこれをprimefacesフォーラムに投稿しました。Tomcat 7.0のJSFでPrimefaces 3.5を使用しています

index.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>

one.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>

TreeBean.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 に答える