SlingModel @ChildResource is not working



Hi All,


I have a node called "entries" under the page. The "entries" node having some child nodes like entry1, entry2, entry3. The "entries" and child nodes "entry1" have been creating via code and I don't have any component for this. Now, I'm trying to access the "entries" node in a sling model but it's not working. Below is the screenshot of the node structure,


Screenshot 2020-07-28 at 12.08.19 PM.png


Below is the code,


    @Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class HistoryModel {

private static final Logger LOGGER = LoggerFactory.getLogger(HistoryModel.class);

private Resource currentResource;

/*@ChildResource(name = "entries")
private List<HistoryBean> entries;
@ChildResource(name = "entries")
private Resource entries;

@ChildResource(name="entries",injectionStrategy= InjectionStrategy.OPTIONAL,via = "resource")
Resource child;

public Resource getEntries() {
return entries;

public Resource getChild() {
return child;

protected void postConstruct() {
//Nothing inside
LOGGER.debug("HistoryModel post construct Method().. calling..");
LOGGER.debug("HistoryModel entries.. calling..{}", entries);
LOGGER.debug("HistoryModel child.. calling..{}", child);


Tried with @childResource. In the log, I'm getting null. anything wrong in the code? Can anyone help?


@arunpatidar26 @smacdonald2008 @arunpatidar26 @Ratna_Kumar @kautuk_sahni @wimsymons @cqsapientu69896 @vanegi @Veena_Vikram @varuns7990 @Theo_Pendle




AEM 6.4 Sling Model

Accepted Solutions (1)

Accepted Solutions (1)




Hi @vijays80591732 ,


If this is not a component and you want to access it in Sling Model, then you can make use of a java class to read its child values and return in Sling Model in this way:


@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class HistoryModel {

private List<WorkflowItem> workflowItems;

private transient Resource resource;

private void init() {
workflowItems = SomeUtilClass.getWorkflowItems(resource, "path to entries node");
And your Util Class method can have this code:
List<WorkflowItem>workflowItemsList = Collections.emptyList();
Resource workflowResource = resource.getResourceResolver().getResource("path to entries");
if (workflowResource != null && workflowResource.hasChildren()) {
workflowItemsList =
.map(child -> child.adaptTo(WorkflowItem.class))
return workflowItemsList;
WorkflowItem class can be another Model class with Description and Message and other attributes as per your need.

Answers (1)

Answers (1)





try with 

@ChildResource(injectionStrategy = InjectionStrategy.OPTIONAL)

Collection<Resource> entries


Hope this will help