I worte java code to display list of child pages using sling models . It's not working getting error. Please help me on it
package com.company.digital.core.models;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Named;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.RequestAttribute;
import org.apache.sling.models.annotations.injectorspecific.ScriptVariable;
import org.apache.sling.models.annotations.injectorspecific.SlingObject;
import org.apache.sling.models.annotations.injectorspecific.ValueMapValue;
import com.day.cq.wcm.api.Page;
import org.apache.sling.models.annotations.DefaultInjectionStrategy;
@Model(adaptables = Resource.class, defaultInjectionStrategy=DefaultInjectionStrategy.OPTIONAL)
public class ChildPagesModel {
@ValueMapValue
private String parentPath;
@SlingObject
private SlingHttpServletRequest request;
@SlingObject
private ResourceResolver resolver;
@SlingObject
private Resource resource;
@SlingObject
private Page page;
@PostConstruct
protected void init() {
resolver = request.getResourceResolver();
resource = resolver.getResource(parentPath);
page = resource.adaptTo(Page.class);
}
public List getChildPages() {
List<String> list = new ArrayList<String>();
Iterator<Page> itr = page.listChildren();
while (itr.hasNext()) {
list.add(itr.next().getPath());
}
return list;
}
}
HTL code:
-----------
Child Pages <br>
<sly data-sly-use.data="com.company.digital.core.models.ChildPagesModel"/>
<sly data-sly-list="${data.getChildPages}">
${item}
</sly>
