2017-09-30 61 views
0

我有一個元素selectOneMenu內部元素selectManyMenu(組件名稱已被更改)。p:selectOneMenu裏面selectManyMenu故障

<p:selectManyMenu id="#{id}MyItemsList" converter="#{backend.myItemsConverter}" 
         value="#{backend.selectedItem}" 
         rendered="#{backend ne null}" var="item"> 
     <f:selectItems value="#{backend.getMyItems()}" 
         var="varItems" 
         itemLabel="#{varItems.name}" itemValue="#{varItems.id}"/> 
     <p:column> 
      <h:outputText value="#{item.name}" title="#{item.title}"/> 
     </p:column> 
     <p:column> 
      <p:selectOneMenu value="#{item.subId}" converter="#{backend.subItemsConverter}"> 
       <p:ajax listener="#{backend.onSubItemClick}"/> 
       <f:selectItems value="#{backend.subItems}" var="varSubItems" 
           itemLabel="#{varSubItems.name}" 
           itemValue="#{varSubItems.id}"/> 
      </p:selectOneMenu> 
     </p:column> 
    </p:selectManyMenu> 

它們顯示正常,但是當我在一行中更改selectOneMenu的值時,它會全部改變。我究竟做錯了什麼?

example

+0

_我在做什麼錯?_你試圖以一種永遠不會成爲用例的方式嵌套組件。所以它很可能只是不支持 – Kukeltje

+0

解決方案:使用p:dataTable代替p:selectManyMenu。在這種情況下,所有的作品都像魅力 –

回答

0
<p:remoteCommand name="subItemChange" action="#{backend.onSubItemChange}" 
        process="@this" 
        update="@form:ButtonsPanel"/> 
    <p:dataTable id="#{id}MyItemsListReadOnly" converter="#{backend.myItemsConverter}" 
       value="#{backend.selectedItem}" 
       rendered="#{backend ne null}" var="item"> 
     <p:column style="width: 50%"> 
      <h:outputText value="#{item.name}" title="#{item.title}"/> 
     </p:column> 
     <p:column style="width: 50%"> 
      <p:selectOneMenu value="#{item.subId}" converter="#{backend.subItemsConverter}" 
          onchange="subItemChange();" > 
       <f:selectItems value="#{backend.subItems}" var="varSubItems" 
          itemLabel="#{varSubItems.name}" 
          itemValue="#{varSubItems.id}"/> 
      </p:selectOneMenu> 
     </p:column> 
    </p:dataTable> 

的dataTable救了我的時間。另外,要從它調用SubItemChange,需要使用remoteCommand。希望這有助於某人。