如何使用健壮的HTML文件访问AEM 6中的全局隐式对象

时间:2016-08-09 19:03:23

标签: sightly aem-6

与CQ5中的每个组件jsp包含global.jsp不同,sightly不包含任何此类依赖项。它如何实际访问所有全局对象。它的后端过程是什么?代码如何编译成java ??

1 个答案:

答案 0 :(得分:2)

  

代码如何编译成java?

Sling sightly API有两个捆绑包来支持这个,第一步是编译成Abstract Syntax Tree抽象语法树以树形式映射普通Java源代码。这个树更方便,以编程方式分析和修改比基于文本的源更可靠。)这是由Apache Sling Scripting Sightly Compiler

完成的

接下来是将(> transpile)抽象语法树转换为java源代码。这是通过捆绑Java Compiler

实现的
  

它如何实际访问所有全局对象。

要理解这一点,您需要了解Sling中脚本解析的方式以及如何将资源解析为Sling Scripting引擎的核心脚本。要了解ScriptEngine的基础知识,请查看java docs here,其实现是SightlyScriptEngine

脚本解析的工作方式是资源适应DefaultSlingScript,这由SlingScriptAdapterFactory完成。

SlingScriptAdapterFactory引用了传递给BindingsValuesProvider的{​​{1}}。 DefaultSlingScript的一个实现是BindingsValuesProvider(您可以将其视为AEMSightlyBindingsValuesProvider中的服务),它提供了默认对象。

然后/system/console/services负责调用DefaultSlingScript并调用其方法SightlyScriptEngine,该方法填充绑定中的默认对象,然后将此绑定设置为请求属性。