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

Avatar

Avatar

jaib75117127

Avatar

jaib75117127

jaib75117127

07-10-2020

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

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

VeenaK

Avatar

VeenaK

VeenaK

08-10-2020

check out this similar query posted in the community that should help your problem.

https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/how-to-pass-parameters-to-...

Answers (3)

Answers (3)

Avatar

Avatar

Arun_Patidar

MVP

Total Posts

2.9K

Likes

1.0K

Correct Answer

831

Avatar

Arun_Patidar

MVP

Total Posts

2.9K

Likes

1.0K

Correct Answer

831
Arun_Patidar
MVP

07-10-2020

Avatar

Avatar

TUmesh

Avatar

TUmesh

TUmesh

07-10-2020

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

 

Avatar

Avatar

Jineet_Vora

Avatar

Jineet_Vora

Jineet_Vora

07-10-2020

Hello @jaib75117127,

You can pass the parameters in Sightly (HTL) to your Java model using the Java Use-API: https://docs.adobe.com/content/help/en/experience-manager-htl/using/htl/use-api-java.html#passing-pa...

Also, if applicable, you can use the Java Global objects like 'request': https://docs.adobe.com/content/help/en/experience-manager-htl/using/htl/global-objects.html#java-bac...

 

Jineet