Sling Model and Sightly

Avatar

Avatar

ad6

Avatar

ad6

ad6

15-10-2015

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?

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

justin_at_adobe

Employee

Avatar

justin_at_adobe

Employee

justin_at_adobe
Employee

15-10-2015

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

Answers (3)

Answers (3)

Avatar

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Reply

2.3K

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Reply

2.3K
smacdonald2008

15-10-2015

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

Avatar

Avatar

justin_at_adobe

Employee

Avatar

justin_at_adobe

Employee

justin_at_adobe
Employee

15-10-2015

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

Avatar

Avatar

ad6

Avatar

ad6

ad6

15-10-2015

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.