Nikita Kovalenko
Nikita Kovalenko

Reputation: 53

p:selectOneMenu inside selectManyMenu trouble

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?

example

Upvotes: 1

Views: 161

Answers (1)

Nikita Kovalenko
Nikita Kovalenko

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

Related Questions