Даже если в html будет отображаться только 10 элементов, дерево компонентов будет содержать 40 элементов
Вы правы в том, что включенные компоненты будут частью дерева компонентов, даже если отображаемое значение равно false.Однако <ui:repeat>
не дублирует свое содержимое в дереве компонентов, но будет многократно повторять его дочерние компоненты на каждом этапе жизненного цикла JSF.Следовательно, дерево компонентов будет содержать только 4 компонента "item".
Если 1 равно true, и у нас может быть много скрытых компонентов в дереве компонентов, то это из-за проблем производительности, скажем, 400элементы вместо 40?
Это может быть, как задокументировано в связанном ответе , но для заметности требуется много компонентов.(Некоторое время назад я проводил тестирование по этому поводу. У меня нет цифр под рукой, но IIRC, добавив 600 неотрисованных компонентов, добавил 300 мс к времени отклика веб-приложения.)
- этоесть обработчик условного тега, который ведет себя как c: if и не будет включать компонент в дерево?Или я должен использовать c: if в качестве крайней меры?
TagHandlers со значениями выражений имеют всевозможные ограничения, поэтому я рекомендую по возможности избегать их.Но да, чтобы на самом деле предотвратить включение в дерево компонентов, я тоже использую <c:if>
.