Reputation: 53
I have an element selectOneMenu inside element selectManyMenu (component names have been changed).
<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>
They are displayed normally, but when I change the value of the selectOneMenu in one line, it changes in all. What am I doing wrong?
Upvotes: 1
Views: 161
Reputation: 53
<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 saved my time. In addition, to call onSubItemChange from it, need to use remoteCommand. Hope this helps to somebody.
Upvotes: 1