как заставить работать элементы повторного рендеринга с динамическим идентификатором в RichFaces

#jsf #richfaces #render #rerender

#jsf #richfaces #визуализировать #повторный запуск

Вопрос:

У меня есть следующий код на моей странице:

     <a4j:repeat value="#{tdController.cu.esaDoutCUConsigment.esaDoutCUDepartureArrivalTransport.transportMeans}" var="transportMean" rowKeyVar="idx">
              <tr>
                <td>
                    <rich:autocomplete id="transportMeansInactiveCountry#{idx}" mode="cachedAjax"
                                       autocompleteMethod="#{countryList.autoComplete}"
                                       minChars="1" layout="grid"
                                       var="country" fetchValue="#{country.code}" width="50px"
                                       inputClass="autoCompleteWidth20"
                                       immediate="true" autofill="true"
                                       value="#{transportMean.country}"
                                       converter="com.enfasis.eced.common.controller.converter.CountryConverterAutoComplete">
                        <h:outputFormat value="{0}({1})">
                            <f:param value="#{country.name}"/>
                            <f:param value="#{country.code}"/>
                        </h:outputFormat>

                        <a4j:ajax event="selectitem" execute="@this"
                                  render="transportMeansInactiveCountryCode#{idx}"/>
                    </rich:autocomplete>
                    <h:outputText id="transportMeansInactiveCountryCode#{idx}"
                                  value="#{transportMean.country.name}" style="margin-left:5px"/>
                </td>
                                    ...
   </a4j:repeat....
 

в цикле a4j: repeat я динамически устанавливаю идентификатор, добавляя индекс строки в конце имени идентификатора, например id =»transportMeansInactiveCountryCode #{idx}».

Но когда я устанавливаю идентификаторы таким образом, повторное отображение элемента с id=»transportMeansInactiveCountryCode#{idx}» не работает.

Как я могу решить эту проблему?

Ответ №1:

Я думаю, вам нужно удалить индекс из атрибута ID. Он автоматически генерируется с индексом для вас.

чтобы проверить это, запустите свою страницу, а затем просмотрите исходный HTML-код страницы. вы обнаружите, что идентификатор компонента выглядит как <form_name>-<id>-<index> Примечание: попробуйте вложить свой aj: повторите в стороне a