Get a data-sly-list element as a jsonarray | Community
Skip to main content
rampai
New Participant
October 11, 2019
Solved

Get a data-sly-list element as a jsonarray

  • October 11, 2019
  • 5 replies
  • 5287 views

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.
Best answer by Ankur_Khare

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
October 23, 2019

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

rampai
rampaiAuthor
New Participant
October 13, 2019

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

arunpatidar
New Participant
October 11, 2019

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. 

    } 

Arun Patidar
Ankur_Khare
Ankur_KhareAccepted solution
New Participant
October 11, 2019

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

Gson().toJson("data");

ArpitVarshney
New Participant
October 11, 2019

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