Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Converting jsp to HTL

Avatar

Level 3

Hi I am trying to convert my existing jsp to htl. I am stuck at preparing valuemapresource which was included in jsp like below

ValueMap vm= new ValueMapDecorator(new HashMap<>());
vm.put("granite:class", "classname");
vm.put("value", value);
vm.put("name", name);
vm.put("text", text);
ValueMapResource valueMapResource = new ValueMapResource(resourceResolver, resource.getPath(), "granite/ui/components/coral/foundation/form/checkbox", vm);
<sling:include resource="<%= valueMapResource %>"/>

 I wanted to convert this above snippet to HTL using data-sly-resource. could you let me know how can i be able to prepare this similar resource in htl.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi Srikanth,

 

HTL is strictly presentation layer. There is no way to create objects or write any logic  in HTL. You need a support class(Sling Model or Use class) to return ValueMapResource object. The returned object can be included in HTL.

 

-AG

View solution in original post

7 Replies

Avatar

Level 8

You need to create a java class for this. if you are looking to populate dropdown then the below article may help you.

http://www.coderss.in/how-to-create-dropdown-dynamically-using-granite-datasource-object-in-aem-6-3/

 

Avatar

Level 2

You can simply create a node in crx/de of required resource type (here : "granite/ui/components/coral/foundation/form/checkbox") . You can add the properties to node, like here you're putting it in ValueMap and  you can include that resource using data-sly-resource HTL syntax like below :

 

<div data-sly-resource="path/to/resource"></div>

For more ways to include resources using HTL please refer : https://docs.adobe.com/content/help/en/experience-manager-htl/using/htl/block-statements.html#resour... 

Avatar

Level 3
I don't know why I have to introduce node here ? for creating a resource the value map properties are dynamic not sure how we update to static node.and utlize it dynamically

Avatar

Level 2

Looking at the code snippet, I thought it's static one.

Avatar

Level 2

 You can use granite data sources for generating the dynamic list / checkbox options. See here :
https://redquark.org/aem/day-17-granite-datasources/ 

OR you can create a Java WCM Use POJO and manipulate your fields in the same. You can use Node API to create node and add properties dynamically. See here :https://stackoverflow.com/questions/38888773/programmatically-add-node-in-aem 

Avatar

Correct answer by
Community Advisor

Hi Srikanth,

 

HTL is strictly presentation layer. There is no way to create objects or write any logic  in HTL. You need a support class(Sling Model or Use class) to return ValueMapResource object. The returned object can be included in HTL.

 

-AG