Resource Resolver returned as null via sling model

2019-09-20 18:00发布

问题:

Resource Resolver is being returned as null while injecting through sling models, let me know if anything I am missing :

I tried with :

@Model(adaptables = Resource.class)
public class Navigation {

   @Inject  @Source("sling-object")
   private ResourceResolver resourceResolver;

}

I also tried with:

@Model(adaptables = Resource.class)
public class Navigation {

  @Inject
  private ResourceResolver resourceResolver;

}

In both cases it was being returned as null and throwing a null pointer exception.

Let me know what I may be missing to correct this error.

回答1:

Check if you have invoked <cq:defineObjects /> before adapting resource to model (<cq:defineObjects /> should be in your global.jsp file which should be included on the beginning of each component)



回答2:

This is working for me using the @SlingObject annotation, rather than @Inject and @Source. Theoretically they should be doing the same thing, but figured I'll add this an answer just in case it helps someone else as well.

@Model(adaptables = Resource.class)
public class Navigation {

  @SlingObject
  private ResourceResolver resourceResolver;

}