从 sightly javascript 使用函数调用 OSGi 服务

Call OSGi service from sightly javascript use function

我正在尝试从 sightly javascript use function. Through the sling SlingScriptHelper 访问 OSGi 服务。我可以从 javascript 调用 sling.getService(Service.class) 方法,但我不知道如何在 javascript 中指定 class 。

看起来 should be possible 引用 java classes 使用完全限定名称或使用 rhino 的 importPackage(..)

但是,我得到以下异常:

org.apache.sling.scripting.sightly.SightlyException:
org.mozilla.javascript.EvaluatorException: Can't find method
org.apache.sling.scripting.core.impl.InternalScriptHelper.getService(object).

为此,请在完全限定的 class 名称前加上 Packages,例如

var myService = sling.getService(Packages.com.myco.MyService);

(其中com.myco.MyService是服务接口)

有关示例,请参阅 https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/content/src/main/content/jcr_root/apps/acs-commons/sightly/templates/dhlm.js#L23