Недостатком использования рендеринга является то, что все привязки значений будут по-прежнему оцениваться, даже если соответствующая разметка не отправляется на страницу. Таким образом, трюк здесь заключается в том, чтобы убедиться, что компоненты даже не существуют, пока вы их не захотите.
Каждый компонент имеет метод getChildren(). Это возвращает измененный список компонентов, который имеет метод add(). Это позволяет вам добавлять компоненты на страницу «на лету», либо во время загрузки страницы, либо позже во время события. Для целей того, что вы пытаетесь сделать, вы захотите отложить добавление «дорогих» компонентов до последующего события.
Создайте обработчик событий, прикрепленный непосредственно к корню вида(), присвойте ему уникальный идентификатор (например, «loadExpensiveComponentsEvent»), установите его режим обновления на частичный, установите идентификатор обновления на любой div или панель, содержащий результаты поиска, и установите его имя события произвольному событию (например, «loadExpensiveComponents»). Это предотвратит запуск вашего события по фактическому поведению пользователя. Установите код события в SSJS, который будет вводить ваши компоненты.
Затем добавьте блок сценария () для запуска события после загрузки страницы:
XSP.addOnLoad (function() { XSP.firePartial (null, "# {id: loadExpensiveComponentsEvent}") ; });
Ваша страница будет загружена без компонентов результатов поиска. Как только страница будет полностью загружена, она автоматически активирует событие вставки компонентов.
Чтобы узнать, как закодировать событие впрыска, откройте файл Java, который был сгенерирован с вашей существующей страницы, чтобы узнать, какие компоненты нужно вводить и как установить их значения.
Вы имеете в виду, что я использую клиентскую сторону js для partialrefresh и стороне сервера js для установки viewcope? –
будет ли событие XSP действительно работать, если панель не отображается? –
Вот почему вам нужно обернуть его в визуализированное – stwissel