2014-12-23 85 views
0

我有很多<p:tree>項目都啓用了選擇,但我希望所有人都使用相同的選擇變量,但只有最後創建的樹設置值,其他選擇不傳遞給託管bean。有許多p:樹只有一個選擇變量?

這是誰在我管理的bean創建樹

<p:accordionPanel> 
    <c:forEach items="#{grupController.listRepo}" var="repo"> 
     <p:tab title="#{repo.nome}"> 
      <p:tree cache="false" dynamic="true" 
        value="#{grupController.listRepo(repo.id)}" var="item" 
        selectionMode="checkbox" id="arbol" 
        selection="#{grupController.categoriesAutorized()}"> 
       <p:treeNode expandedIcon="ui-icon-folder-open" 
          collapsedIcon="ui-icon-folder-collapsed"> 
        <h:outputText value="#{item}" /> 
       </p:treeNode> 
      </p:tree> 
     </p:tab> 
    </c:forEach> 
</p:accordionPanel> 

的代碼,我有這個變量

private TreeNode[] categoriesAutorized; 

就像我之前說這個變量是空的始終,但是當所選擇的項目是從最後一棵樹。

我該如何解決這個問題,並在一個單一的變量中有選定項目的完整列表?

我使用PrimeFaces 5.1

預先感謝您的時間和答案

+0

是否有任何理由,爲什麼你不使用可摺疊面板數據模型支持的變種拉選定的節點? – kolossus

+0

@kolossus對不起,但我不明白你的問題 –

+0

您是否知道在手風琴面板內創建迭代子組件的'c:forEach'方法的替代方法? – kolossus

回答

0

<p:accordionPanel/>value屬性,它允許你建立你的手風琴的基礎上在後臺列表中的項目內容。使用這個,您的示例現在看起來像

 <p:accordionPanel value="#{grupController.listRepo}" var="repo"> 
      <p:tab title="#{repo.nome}"> 
       <p:tree cache="false" dynamic="true" 
         value="#{grupController.listRepo(repo.id)}" var="item" 
         selectionMode="checkbox" id="arbol" 
         selection="#{grupController.categoriesAutorized()}"> 
         <p:treeNode expandedIcon="ui-icon-folder-open" 
            collapsedIcon="ui-icon-folder-collapsed"> 
          <h:outputText value="#{item}" /> 
         </p:treeNode> 
       </p:tree> 
      </p:tab>    
     </p:accordionPanel> 
0

您可以使用ajax based selection。 grupController.categoriesAutorized的setter應該在那裏,然後是一個空的主體。

在nodeSelect和nodeUnselect聽衆,你有彈出或從列表中自己