AEM Objects Sling Models Injector

Available since version 1.6.0

Purpose

Allows for Sling Models classes and interfaces to be injected with common AEM-related objects, namely those made available using <cq:defineObjects/>:

  • resource
  • resourceResolver
  • componentContext
  • pageManager

  • currentPage
  • resourcePage
  • designer
  • currentDesign
  • resourceDesign
  • currentStyle
  • session
  • xssApi

Also allows some direct injections that adapt from resourceResolver. (since 6.6.1) This adapts if the field has the appropriate class declared.

Most injections are available when adapting either a Resource or SlingHttpServletRequest object, with these exceptions, which only work when adapting a SlingHttpServletRequest object:

  • currentPage
  • componentContext
  • xssApi
  • currentDesign

Example

@Model(adaptables = { SlingHttpServletRequest.class, Resource.class })
public class TestModel {

    @AemObject
    private Page resourcePage;

    public Page getResourcePage() {
        return resourcePage;
    }
}