В отличие от включения global.jsp с каждым компонентом jsp в CQ5, наглядно не включает никакой такой зависимости. Как он действительно получает доступ ко всем глобальным объектам. Что такое бэкэнд-процесс. И как наглядный код компилируется в java ??Как зрелищные файлы HTML получают доступ к глобальным неявным объектам в AEM 6
ответ
Как наглядный код компилируется в java?
Sling красивого API имеет две связки, чтобы поддержать это, первый шаг заключается в компиляции красивой в Abstract Syntax Tree (абстрактный синтаксис Дерево отображает обычный исходный Java-код в виде дерева. Это дерево является более удобным и надежным для анализа и изменять программно, чем текстовый источник.) Это делается Apache Sling Scripting Sightly Compiler
Следующая заключается в преобразовании (transpile) абстрактного синтаксиса дерево в исходный код Java. Это достигается в комплекте Java Compiler
Как он действительно обращается ко всем глобальным объектам.
Чтобы понять это, вам нужно понять, как происходит разрешение сценария в Sling и как ресурс разрешен для скриптов, который является основой для Sling Scripting engine. Чтобы понять основы ScriptEngine посмотреть на ява документы here, реализация этого SightlyScriptEngine
Путь разрешения скрипт работает в том, что ресурс приспособлен к DefaultSlingScript
, это делается SlingScriptAdapterFactory
.
SlingScriptAdapterFactory
имеет ссылки на BindingsValuesProvider
, который передается по адресу DefaultSlingScript
. Одна из реализаций BindingsValuesProvider
- AEMSightlyBindingsValuesProvider
(вы можете увидеть это как услугу в /system/console/services
), которая предоставляет объекты по умолчанию.
DefaultSlingScript
затем отвечает за вызов SightlyScriptEngine
и вызывает его метод eval
, который заполняет объекты по умолчанию в привязке и затем устанавливает это связывание как атрибут запроса.