Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Converting jsp to HTL

srikanthg212933
Level 3
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
Anudeep_Garnepudi
Correct answer by
Community Advisor
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
raj_mandalapu
Community Advisor
Community Advisor

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/

 

abhilakhpatre1
Level 2
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... 

srikanthg212933
Level 3
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
abhilakhpatre1
Level 2
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 

Anudeep_Garnepudi
Correct answer by
Community Advisor
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