0

我正在使用可以扩展以显示产品变化的 DataTable。这种变化应该是可编辑的,我考虑过就地组件来做到这一点。但是,当尝试保存时,新的不会发送到后端。

这是xhtml的一部分

<h:form>
    <p:dataTable id="grid-anuncios"
                 value="#{gerenciadorAnuncioController.model}" 
                 selection="#{gerenciadorAnuncioController.anunciosMLSelecionados}"
                 rowKey="#{anuncio.id}"
                 rowHover="false"
                 editable="true"
                 editMode="row"
                 var="anuncio" 
                 emptyMessage="Nenhum anúncio encontrado"
                 rows="50"
                 resizableColumns="true"
                 styleClass="Top GrayBorder BoxShadow"
                 paginator="true"
                 lazy="true">

                 <!--columns and stuff-->

        <p:rowExpansion>
            <div class="flexPanels">
                <ui:repeat value="#{anuncio.variations}"
                           var="variacao">
                    <p:outputPanel styleClass="panelVariacoes BoxShadowLight">
                        <div class="panelVariacoesHeader">
                            <p:graphicImage value="#{variacao.urlPrimeiraImagem}" styleClass="logoImage" />
                        </div>
                        <div class="panelVariacoesBody">
                            <p:outputPanel class="MarBot5 Fs15">

                                <h:outputText styleClass="FontLatoBold" value="Qtd: " />

                                <!-- The problem seems to be here -->

                                <p:inplace editor="true">
                                    <p:ajax event="save" 
                                            process="@parent"
                                            listener="#{gerenciadorAnuncioController.gravarQuantidadeVariacao(anuncio, variacao)}"
                                            update=":growl-principal"/>
                                    <f:facet name="output">
                                        <h:outputText value="#{variacao.availableQuantity}" />
                                    </f:facet>
                                    <f:facet name="input">
                                        <mml:inputNumber value="#{variacao.availableQuantity}"
                                                         required="true"
                                                         type="integer"
                                                         styleClass="Wid70px"/>
                                    </f:facet>
                                </p:inplace>


                            </p:outputPanel>
                            <div class="Separator"></div>
                            <ui:repeat value="#{variacao.attributeCombinations}" var="atributo">
                                <div class="JC-FlexBox MarBot5 Fs15">
                                    <h:outputText styleClass="FontLatoBold" value="#{atributo.name}: " />
                                    <h:outputText value="#{atributo.valueName}" />
                                </div>
                            </ui:repeat>
                        </div>
                    </p:outputPanel>
                </ui:repeat>
            </div>
        </p:rowExpansion>
     <p:dataTable>
<h:form>

如果 Debugged,当点击 inplace 时,gravarQuantidadeVariacao 方法将具有先前值的 availableQuantity,而不是新值。

当前的 inplace/ajax 调用在其他任何地方都有效,但在这里.. 所以我有点不知道该怎么做

我已经对这个问题进行了很多研究,但我找不到类似的东西。任何人都可以帮忙吗?

4

0 回答 0