Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Pass an object as a parameter to sling model/wcmusepojo from sightly(HTL)

jaib75117127
Level 1
Level 1

Hi,

I'm converting a JSP into sightly for a component. In that component they are setting an object as a request attribute to be used in another component. We cannot set request attributes in sightly right? So I'm trying to send this object as a parameter to a sling model/wcmusepojo to set the request attribute there but I think we can only pass string values as arguments to slingmodels/wcmusepojo right? Is there any example of passing an object as a parameter to slingmodel/wcmusepojo? 
Thanks!

AEM 6.5 htl sightly Sling Model
1 Accepted Solution
VeenaK
Correct answer by
Level 3
Level 3
7 Replies
Umesh_Thakur
Community Advisor
Community Advisor

You can not set request attribute from sightly but you can get it.

And also you can not pass a pure java object except String and some other like that so if you need any backend operation like setting request object you need to do it java only before it comes to the sightly.

if you still need to pass the parameter, you can do ti like that:

Sightly:

<sly data-sly-use.someObject="${'com.demo.core.models.DemoModel' @propertyOne='PropertyOne', propertyTwo='PropertyTwo'}>

Sling Model:

@Model(adaptables = { SlingHttpServletRequest.class })

public class DemoModel {

 

@Inject

private String propertyOne;

 

@Inject

private String propertyTwo;

 

//getter and setter

}

 

WCMUsePojo:

 

public class DemoUse extends WCMUsePojo {

    @Override

    public void activate() throws Exception {

        String propertyOne = get("propertyOne", String.class);

        String propertyTwo = get("propertyTwo", String.class);

              }

}

NOTE: update the name of the wcmusepojo accordingly.

this will help.

Regards

Umesh Thakur

 

jaib75117127
Level 1
Level 1
Thanks but can I pass a java object as well instead of string and do this -> get("propertyOne", JavaClassName.class); to get the object?
jaib75117127
Level 1
Level 1
Thanks but the problem is not getting the request object but passing an object as an argument to sling model/wcmusepojo
VeenaK
Correct answer by
Level 3
Level 3