Get a data-sly-list element as a jsonarray | Community
Skip to main content
rampai
Level 1
Oct 11, 2019 6:31 AM UTC
Solved

Get a data-sly-list element as a jsonarray

How can we pass a list from HTL to a sling model?

I need a nested list to be converted into JsonArray format.

<div data-sly-list="${values}">

     <h1>${item.title}</h1>

     <p>${item.description}</p>

</div>

Now I want the same thing as a json string from ${values}:

[{"title":"test1", "description":"desc1"},{"title":"test2", "description":"desc2"}]

Any inputs would be helpful.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Ankur_Khare
Ankur_KhareAccepted solution
New Participant
Oct 11, 2019 6:54 AM UTC

In your java class you can convert the data to json using GSON and send back to frontend -

Gson().toJson("data");

5 replies

Ankur_Khare
New Participant
Oct 23, 2019 11:20 AM UTC

Could you pls mark it as correct so that it will help others as well..

Translate
rampai
rampaiAuthor
Level 1
Oct 13, 2019 2:32 PM UTC

Thanks. This is precisely what I did in the end.

Translate
arunpatidar
New Participant
Oct 11, 2019 6:56 PM UTC

Create a sling model and adapt usiing SlingHttpServletRequest.class

Example:

<!-- info.html -->

<div data-sly-use.info="${'TestModel' @ text='Some text'}">

    <p>${info.reversed}</p>

</div>

Sling model

import org.apache.sling.api.SlingHttpServletRequest; 

import org.apache.sling.models.annotations.Model; 

import org.apache.sling.models.annotations.Optional; 

import org.apache.sling.models.annotations.injectorspecific.RequestAttribute; 

 

 

@Model(adaptables = SlingHttpServletRequest.class) 

public class TestModel { 

@RequestAttribute 

@Optional 

private String text; 

@PostConstruct 

    public void init() { 

        //we can read the values directly here. 

    } 

} 

Translate
Arun Patidar
Ankur_Khare
Ankur_KhareAccepted solution
New Participant
Oct 11, 2019 6:54 AM UTC

In your java class you can convert the data to json using GSON and send back to frontend -

Gson().toJson("data");

Translate
ArpitVarshney
New Participant
Oct 11, 2019 6:49 AM UTC

Hi,

Please refer below to pass data from sightly to sling model:

https://sling.apache.org/documentation/bundles/scripting/scripting-htl.html#passing-parameters

After passing the data to sling model you can write your custom code in Sling model to convert it to json.

Regards,

Arpit Varshney

Translate