p: автозаполнение перестает работать после обновления родительского через ajax - PullRequest
0 голосов
/ 08 июня 2018

У меня есть список автозаполнения, который отображается с использованием p:dataList.Пример, показанный ниже:

<h:panelGroup layout="block" id="outerPanel">
    <p:dataList rendered="#{bean.myModel.listOfItems.size()>0}"
                var="additionalMP"
                value="#{bean.myModel.listOfItems}" 
                rowIndexVar="index" emptyMessage="">
         <div class="wrapper ui-g">
            <div>
              <p:autoComplete
                          cache="true"
                          value="#{bean.myModel.listOfItems[index]}"  
                          completeMethod ="#{handler.getAutoCompleteData}"
                          rendered ="true"
                          required="false"
                          scrollHeight="200"
                          styleClass="custom"
                          forceSelection="true"> 
                   <p:ajax event="query" global="false"/>    
                   <f:attribute name="filter" value="filterName" /> 
                   <f:attribute name="mode" value="edit" />                          
              </p:autoComplete>                            
             </div>
            <div>                                                    
               <p:commandLink value="+ Add" actionListener="#{bean.addAutoComplete()}" 
                    update=":formName:outerPanel"></p:commandLink>
            </div>
          </div>
     </p:dataList>
</h:panelGroup>

Итак, кнопка Add вставляет новый элемент в список, и я обновляю панель контейнера, чтобы вновь добавленный элемент мог отображаться в пользовательском интерфейсе.

Как и ожидалось, панель обновлена, и я вижу еще одно автозаполнение в пользовательском интерфейсе.Но проблема в том, что все автозаполнения теперь не работают.то есть они прекращают запускать событие запроса и не дают никаких предложений.

Отредактировано: частичный ответ, который обновляет раздел формы с полями автозаполнения, содержит некоторые теги сценария, которые, вероятно, выполняются на событии готовности / загрузки страницы.,Итак, я знаю, что в основном недавно добавленные виджеты простых лиц не инициализируются.

Есть идеи, как инициализировать добавленные автозаполнения в DOM?

1 Ответ

0 голосов
/ 10 июля 2018

Причиной всей этой проблемы была ошибка в javascript, которая была вызвана попыткой scrollTo определенного элемента на странице из компонента.Эта дрянная строка кода в бине была источником всех неприятностей.На странице не было элемента с идентификатором messages.Яркий пример того, почему пользовательский интерфейс не должен быть связан таким образом.

RequestContext.getCurrentInstance().scrollTo("formId:messages");
...