JSF loop reRender - PullRequest
       7

JSF loop reRender

0 голосов
/ 21 июля 2009

Надеюсь, название не слишком загадочное ...

Проблема, с которой мы столкнулись, заключается в том, что мы генерируем набор элементов управления вводом (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, поэтому каждый раз, когда любой элемент управления, сгенерированный циклом, обновляется, все элементы управления перерисовываются.

Заранее спасибо, если у кого-то есть мысли.

1 Ответ

1 голос
/ 21 июля 2009

Сначала я подумал, что вы должны попробовать заменить <ui:repeat> на <a4j:repeat> и воспользоваться атрибутом ajaxKeys, чтобы переопределить только определенные строки.

Из документов Richfaces :

Основное отличие этого компонента из итерационных компонентов других библиотеки это специальные "ajaxKeys" приписывать. Этот атрибут определяет строку ключи, которые обновляются после Ajax запрос. В результате становится легче обновить несколько дочерних компонентов отдельно без обновления всего стр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...