Надеюсь, название не слишком загадочное ...
Проблема, с которой мы столкнулись, заключается в том, что мы генерируем набор элементов управления вводом (h:inputOneMenu
, h:inputText
и т. Д.) Из некоторого списка Java.
Работает нормально. За исключением требования, что эти входные данные проверяются на лету. Опять же, не так сложно, за исключением того, что, поскольку там были сгенерированы элементы управления в цикле, единственное возможное действие reRender - это в основном вся форма или a4j:outputPanel
вокруг каждой итерации цикла, что в основном то же самое.
Теперь два вышеупомянутых решения технически работают, но у них есть неприятный побочный эффект повторного рендеринга всех элементов управления страницы, который заставляет страницу чувствовать себя действительно раздраженной и неуклюжей. Мы бы хотели, чтобы это не происходило, поэтому в идеале единственный элемент управления, который получает повторно, - это элемент управления, отправляющий обновление / проверку ajax.
В основном это код нашей страницы:
<ui:repeat value="#{seam-outjected-list}" var="item">
<a4j:outputPanel selfRendered="true">
<h:inputText value=#{item.value}>
<a4j:support event="onblur" ajaxSingle="true" />
</h:inputText>
</a4j:outputPanel>
</ui:repeat>
Я пропустил немного вещей, которые просто отображают различные элементы управления в зависимости от элемента.
Как вы можете видеть, мы в настоящее время используем решение a4j:outputPanel
, поэтому каждый раз, когда любой элемент управления, сгенерированный циклом, обновляется, все элементы управления перерисовываются.
Заранее спасибо, если у кого-то есть мысли.