AEM-如何在OSGi组件中检索model-json

问题描述

在Osgi组件/服务中,我需要一个资源(页面,CF等)的JSON表示,就像通过Sling模型选择器(resource.model.json)检索它一样。

不幸的是,在Osgi组件或服务中,没有(吊索)请求对象可用。

有没有一种方法可以获取json表示形式(与所有组件的模型导出器一起使用),而无需创建对本地主机的http请求?

解决方法

这不是问题,只要您可以访问资源即可。

首先,您需要确保您的Model可以通过方法调用传递json。有关如何执行此操作的说明,请参见Get .model.json as String

如果完成此操作,请使用ModelFactory来“ getModelFromResource”。这将为给定资源创建SlingModel的实例。只需调用您之前创建的方法即可获取json。 参见https://sling.apache.org/apidocs/sling10/org/apache/sling/models/factory/ModelFactory.html

您的模型可能应该具有Adaptables = {Resource.class}-如果您从Request进行适应,则可能会遇到麻烦。

HTH, 奥利格