#xpages #global
#xpages #глобальный
Вопрос:
У меня много кодов SSJS для многих NSF, большинство NSF используют один и тот же код функций. Итак, я попытался создать библиотеку со всеми общими функциями, я пытаюсь использовать Xpages Starter Kit, потому что он утверждает, что у него есть поставщик библиотеки SSJS и неявный глобальный SSJS.
Там есть файл Server.jss с надписью «// ваш код библиотеки SSJS отправляется сюда».
Я поместил туда несколько простых кодов, просто чтобы протестировать его, но я не мог понять, как это работает.
print("Hello World");
function hello(){
print("hello");
}
Как это работает?
Я создал и установил сайт обновления, разместил <openntf:canvas/>
его на xpage. Тег canvas создан, но, похоже, с SSJS ничего не происходит. На консоли сервера ничего нет, и при попытке вызвать функцию hello выдается сообщение об ошибке.
Как я могу получить доступ к функциям SSJS в библиотеке?
Комментарии:
1. Вы объявили зависимость от вашего Extlib?
2. Где я должен объявить? В библиотеке или в nsf, где я использую библиотеку?
Ответ №1:
Идентификатор библиотеки — org.openntf.xsp.starter — определяется в разных местах в Starter Kit. Он также присутствует с «/» вместо «.» для некоторых контекстов.
Кроме того, дважды проверьте, включена ли библиотека в свойствах Xsp для вашего приложения.
Также стоит взглянуть на плагин отладки Domino в OpenNTF для отладки вашего кода непосредственно в Eclipse. Также проверьте Справку> Поддержка> Трассировка и Справка> Поддержка> Войти в Domino Designer на наличие ошибок для вашего класса.
Комментарии:
1. Библиотека по-прежнему оригинальна, я не вносил в нее никаких изменений, кроме Server.jss. Библиотека включена в свойствах Xsp в моем приложении. Библиотека работает, потому что я могу вызвать из нее элемент управления canvas. То, что я не понял, как это работает, — это Server.jss. Как использовать функции там.
2. Есть ли способ загрузить SSJS до события загрузки страницы и включить его для всех страниц? Я пытаюсь отредактировать CreateView в классе ViewHandler. Он загружает библиотеку SSJS, но запускается только после загрузки предыдущей страницы.
3. Джесси Галлахер попытался внедрить Java в событие beforePageLoad из ViewHandler, но не смог. Я не уверен, что вы можете загрузить оттуда библиотеку SSJS. Он должен быть выделен в качестве ресурса, например, для компонента просмотра XPage. Но CreateView — это место, где загружается этот компонент представления вместе со всеми дочерними элементами. В то же время выполняется любой код с привязкой загрузки страницы («${…}»). Поэтому, если вы хотите использовать библиотеку SSJS в привязках загрузки страниц, я не думаю, что вы сможете загрузить ее до того, как она вам понадобится.
4. Я понял. Вы предлагаете способ сделать это так? Иметь библиотеку плагинов SSJS, которая может быть доступна во всех приложениях?
5. В качестве способа загрузки библиотеки SSJS на страницу мне был предложен RequestCustomizerFactory. Я не использовал его, и я не уверен, загружается ли он до запуска события beforePageLoad.