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.
Solved! Go to Solution.
In your java class you can convert the data to json using GSON and send back to frontend -
Gson().toJson("data");
Hi,
Please refer below to pass data from sightly to sling model:
After passing the data to sling model you can write your custom code in Sling model to convert it to json.
Regards,
Arpit Varshney
In your java class you can convert the data to json using GSON and send back to frontend -
Gson().toJson("data");
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.
}
}
Thanks. This is precisely what I did in the end.
Could you pls mark it as correct so that it will help others as well..