У меня есть XPage, который можно использовать для редактирования или просто чтения в зависимости от роли пользователя. Теперь мне нужно реализовать эту функцию. Решение действительно простое — просто удалите добавление, редактирование и другие элементы HTML. Проблема в том, что я могу выполнять только код SSJS, но не CSJS при загрузке страницы. Когда я попытался сделать это так document.
в SSJS, это дало мне предсказуемое исключение - document
не распознано. Как мне выполнить его при загрузке страницы?
Как удалить элементы HTML перед загрузкой страницы на XPage
Ответы (2)
Не пытайтесь удалить элементы HTML с отображаемой страницы.
Вместо этого используйте свойство "rendered", чтобы определить, какие элементы управления должны отображаться в зависимости от прав пользователя. («Обработано» означает создано и отправлено в браузер.)
Вы можете установить это свойство здесь
или здесь
Вставьте туда код SSJS, который должен возвращать true (= видимый) или false (= невидимый).
Порядок загрузки страниц следующий (события XPages выделены жирным шрифтом):
- серверная карта всех компонентов XPage и связанных с ними пользовательских элементов управления загружается в память
- beforePageLoad: серверный код разработчика работает с этими компонентами.
- компоненты на стороне сервера повторяются и обновляются на основе вычислений или привязок к внутренним документам.
- afterPageLoad: серверный код разработчика работает с этими компонентами.
- beforeRenderResponse: серверный код разработчика работает с этими компонентами (использование этого события означает, что оно также обрабатывается во время любых частичных обновлений).
- ответ рендеринга повторяет компоненты и обрабатывает HTML для передачи в браузер
- afterRenderResponse: серверный код разработчика работает с компонентами
Как видите, SSJS работает только с картой компонентов на стороне сервера, а не с DOM на стороне клиента. Если вы хотите изменить это, вы можете использовать onClientLoad, но я не думаю, что это запускается после частичного обновления. Таким образом, ваши изменения в DOM могут быть потеряны после частичного обновления (вам нужно будет проверить). Если вы хотите, чтобы изменения в элементах DOM сохранялись, есть два варианта:
- Используйте 1_. jQuery может иметь соответствующий вызов, который можно использовать.
- Напишите средство визуализации на Java, чтобы изменить HTML-код, выводимый для определенного типа компонента.
Похоже, ваши сильные стороны находятся на стороне клиента, поэтому первое может быть лучшим вариантом.