Paulo Augusto Kunzel Ответов: 0

Добавляем слушателя на основе схемы PrimeFaces AJAX, не отправляя обновленное значение


Привет,

Я работаю с таблицей данных, которую можно расширить, чтобы показать вариации продукта. Этот вариант должен быть редактируемым, и я подумал о компоненте inplace, чтобы сделать это. Однако при попытке сохранить новое не отправляется в бэк-энд.

Здесь является частью xHTML-код
<h:form&gt;

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



Если отлаживать, то при нажатии кнопки inplace метод gravarQuantidadeVariacao будет иметь availableQuantity с предыдущим значением, а не с новым. Я довольно много раз перечитывал этот вопрос, но не смог найти ничего подобного. Кто-нибудь может помочь?

Что я уже пробовал:

До сих пор я пытался использовать разные прослушиватели и события щелчка, но результат всегда один и тот же.
Я просмотрел документацию primefaces, но она мало чем помогла, кроме возможности вручную создать кнопку сохранения внутри inplace. Но это было бы лоскутное одеяло на чем-то, что должно/должно работать.
Текущий вызов inplace/ajax работает везде, но не здесь.. Так что у меня вроде как нет никаких идей о том, что делать

0 Ответов