Datatable в неактивной вкладке в tabpanel инициализирует значение - PullRequest
0 голосов
/ 12 января 2012

Я только что обнаружил странное поведение в нашем приложении.

У нас есть богатство: tabPanel switchType = "ajax" с несколькими вкладками.Каждая вкладка содержит rich: dataTable и форму редактирования с a4j: form.

Теперь, когда мы запрашиваем страницу, отображается первая вкладка и инициализируется таблица данных.Все идет нормально.Теперь пользователь может щелкнуть ссылку редактирования (a4j: commandLink), чтобы повторно отредактировать форму редактирования с выбранным объектом, и форма будет перерисована правильно.

НО: в дополнение к этому мы получаем запрос из таблиц данных на другомвкладки ... Даже если вкладки не активны, богатые таблицы данных инициализируются.Не отображается, поскольку вкладка неактивна.Как ни странно, если я использую простой h: dataTable, проблема исчезнет, ​​т. Е. Для этого не получен список результатов.

Пока у меня есть два обходных пути:

  1. ЕслиЯ использую limitToList на editLink, кажется, что обрабатывающая часть работает правильно, но это будет означать, что мы должны адаптировать все командные кнопки / ссылки, и глобальные сообщения перестанут работать, если я не включу его идентификатор в атрибут reRendered ...

  2. Я могу привязать выбранную вкладку к базовому компоненту и отобразить только содержимое активной вкладки с фрагментом s:

Пока второе решениедовольно прямолинейно, и я сейчас использую это, я все еще ищу объяснение.

Кто-нибудь уже сталкивался с таким поведением и имеет объяснение, что происходит?

Спасибо Мартин

Ответы [ 2 ]

0 голосов
/ 18 июня 2013

используйте <a4j:region> внутри вкладки, чтобы ограничить обработку дерева JSF

0 голосов
/ 13 января 2012

У нас есть эта проблема, почти все компоненты визуализируются при выполнении любой ajax-операции.

Мы решили эту проблему, добавив атрибут limitRender = "true" к компонентам и окружающим компонентам с помощью .

Однако rich: tabPanel имеет атрибут limitRender = "true", который не показал мне никакой разницы, использовался он или нет.

Также не забывайте использовать в качестве лучшей практики, которая помогает оптимизировать ваши запросы Ajax.используйте этот тег в формах.

...