Недостатком использования рендеринга является то, что все привязки значений по-прежнему будут оцениваться, даже если соответствующая разметка не будет отправлена на страницу. Итак, хитрость в том, чтобы убедиться, что компоненты даже не существуют, пока вы не захотите их.
Каждый компонент имеет метод getChildren (). Это возвращает изменяемый список компонентов, который имеет метод add (). Это позволяет добавлять компоненты на страницу на лету, либо во время загрузки страницы, либо позже во время события. В целях того, что вы пытаетесь сделать, вы можете отложить добавление «дорогих» компонентов до следующего события.
Создайте обработчик событий, присоединенный непосредственно к корню представления (), присвойте ему уникальный идентификатор (например, «loadExорогоComponentsEvent», установите частичный режим его обновления, установите идентификатор обновления для любого элемента div или панели, который будет содержать результаты поиска), и установите в качестве имени события произвольное событие (например, «loadExорогоComponents»). Это предотвращает запуск вашего события из-за фактического поведения пользователя. Установите код события в SSJS, который будет внедрять ваши компоненты.
Затем добавьте блок script (), чтобы вызвать событие после загрузки страницы:
XSP.addOnLoad (функция () {
XSP.firePartial (null, "# {id: loadExорогоComponentsEvent}");
});
Ваша страница будет загружаться без компонентов результатов поиска. Как только страница полностью загрузится, она автоматически вызовет событие внедрения компонента.
Для получения инструкций о том, как кодировать событие внедрения, откройте файл Java, созданный на существующей странице, чтобы увидеть, какие компоненты необходимо внедрить и для чего их значения установить.