Expand my Community achievements bar.

Access Inner Class Variables In Sightly

Avatar

Level 5

Hi,

I am trying to access inner class properties using data-sly-list as below but it shows me there are 3 objects but not sure how to print the values of objects. I tried with . operator but nothing is visible.

<sly data-sly-test="${tabContentItems.showFilters}">
  <ul class="nav nav-tabs" role="tablist">
  <sly data-sly-list.nav="${tabContentItems.filterNav}">
  # ${nav.filterName}
  </sly>
  </ul>
</sly>

Snippet of sling model :

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

// Populating CTA

  private class CTA {
  private String filterName;
  private String filterImage;


  public String getFilterName() {
  return filterName;
  }

  public void setFilterName(String filterName) {
  this.filterName = filterName;
  }

  public String getFilterImage() {
  return filterImage;
  }

  public void setFilterImage(String filterImage) {
  this.filterImage = filterImage;
  }

  public CTA(String filterName, String filterImage) {
  this.filterName = filterName;
  this.filterImage = filterImage;
  }
  }
}

Thanks,

4 Replies

Avatar

Level 3

May i know what is the requirement?

Why are you using inner class?

Avatar

Level 5

Hi,

I can achieve my use-case in other way also but curious to know whether we can access inner class variables via object of outer class in sightly.

Avatar

Level 5

Issue solved, changed the access specifier of inner class.

Avatar

Level 10

If you setup your sling model class properly - there should be no reason to attempt to access an inner class. You should be able to get the data, including collections as shown here - in the Sling Model section: Building Experience Manager Components using Granite/Coral Resource Types