【问题标题】:p:selectOneMenu inside selectManyMenu troublep:selectOneMenu里面的selectManyMenu麻烦
【发布时间】:2017-09-30 10:00:19
【问题描述】:

我在元素 selectManyMenu 中有一个元素 selectOneMenu(组件名称已更改)。

    <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

【问题讨论】:

  • 我做错了什么? 您正在尝试以一种从未打算成为用例的方式嵌套组件。所以很可能只是不支持
  • 我的解决方案:使用 p:dataTable 而不是 p:selectManyMenu。在这种情况下,一切都像一个魅力

标签: jsf primefaces


【解决方案1】:
    <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 节省了我的时间。另外,要从中调用onSubItemChange,需要使用remoteCommand。希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多