Skip to main content
Level 2
Oct 16, 2015 2:26 AM UTC
Solved

Sling Model and Sightly

I have a Sling Model class and i want to use it in sightly.

My Sling model should be map to the JCR node in order to access the node properties.

So how to map sightly with Sling Model and JCR node?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
JustinEd3Accepted solution
Adobe Employee
Oct 16, 2015 2:26 AM UTC

Assuming your Sling Model class is adaptable from either Resource or SlingHttpServletRequest, you can specify the fully-qualified class name in the data-sly-use attribute. See http://experiencedelivers.adobe.com/cemblog/en/experiencedelivers/2014/04/sightly-intro-part-4.html

4 replies

Adobe Employee
Oct 16, 2015 2:26 AM UTC

Your use directive has the name 'geocode' and your expression has the name 'phone'. Might that be the problem?

Translate
ad6Author
Level 2
Oct 16, 2015 2:26 AM UTC

thanks for your reply.

I have a following Sling Model class :

package com;

import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.Optional;

import javax.inject.Inject;
import javax.inject.Named;


@Model(adaptables=Resource.class)
public class Phone {
    @Inject
    @Optional
    public String defaultColour;
    @Inject
    @Optional
    public String modelName;
  
    public String getDefaultColour() {
        return defaultColour;
    }
    public void setDefaultColour(String defaultColour) {
        this.defaultColour = defaultColour;
    }
    public String getModelName() {
        return modelName;
    }
    public void setModelName(String modelName) {
        this.modelName = modelName;
    }
   }

 

THis is the path of resource which i need to adapt in sling model:

/etc/product/phone/apple

Follwoing is the sightly code :

<div data-sly-use.geocode="com.Phone">

<div> <img src ='${phone.defaultColour}' title ="Logo Image" style="float:left;width:196px;"/> </div>
</div>

 

in this ${phone.defaultColour} is coming as empty.

So how to map my sling model class the the resource path using sightly.

Translate
smacdonald2008
Level 10
Oct 16, 2015 2:26 AM UTC

We also have a community article that uses Sighty and Java.

<div data-sly-use.heroTextObject="com.mycompany.myproject.sightly.HeroTextComponent" data-sly-test="${heroTextObject}">
       <h1>${heroTextObject.heroTextBean.headingText}</h1>
       <p>${heroTextObject.heroTextBean.description}</p>    
</div>

See: http://helpx.adobe.com/experience-manager/using/creating-sightly-component.html

Translate
JustinEd3Adobe EmployeeAccepted solution
Adobe Employee
Oct 16, 2015 2:26 AM UTC

Assuming your Sling Model class is adaptable from either Resource or SlingHttpServletRequest, you can specify the fully-qualified class name in the data-sly-use attribute. See http://experiencedelivers.adobe.com/cemblog/en/experiencedelivers/2014/04/sightly-intro-part-4.html

Translate