HTL 组件中的 AEM ResourceResolverFactory null java class

AEM ResourceResolverFactory null in HTL component java class

我有一个 HTL 组件 class 就像

MyComponent extends WCMUser{
@Reference
private ResourceResolverFactory  resourceResolverFactory;

但是当我尝试使用它时,我遇到了 NullPointerException。

我什至尝试使用@Service 和@Component SCR 标签,但没有帮助。

您不能将 @Reference 或其他注释与您的 Java 使用 API 一起使用,因为它不被视为 OSGi 服务。而是使用 getSlingScriptHelper() 获取 SlingScriptHelper 对象,然后可以使用该对象获取服务。

public MyComponent extends WCMUsePojo {

    public void activate() {
        getSlingScriptHelper().getService(<<SomeService.class>>);
    }
}

但是,如果您只需要 ResourceResolver,则可以调用 WCMUsePojo class.

中可用的 getResourceResolver() 方法

有关 Java 使用 API 的更多信息,请参见 in this official doc

知道了,所以我可以创建另一个服务,在那里获取 ResourceResolverFactory。在那里我可以在此服务中使用 ResourceResolverFactory 或将其传递给 WCMUse class.