Primefaces就地Ajax侦听器未发送更新值

时间:2018-09-05 14:37:31

标签: jsf primefaces inplace-editing

我正在使用一个DataTable,可以对其进行扩展以显示产品的变化。这种变化应该是可编辑的,我考虑过就地使用componenet。但是,在尝试保存时,新内容不会发送到后端。

这是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>

如果已调试,则单击就地时,gravarQuantidadeVariacao方法将具有具有先前值而不是新值的availableQuantity。

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

关于这个问题,我已经做了很多事情,但是我找不到类似的东西。有人可以帮忙吗?

0 个答案:

没有答案