HTL Java Use-API Code Example

The HTML Template Language (HTL) Java Use-API allows an HTL file to use data-sly-use to access helper functions in a custom Java class. This allows any sophisticated business logic to be wrapped in Java code, while the HTL code is just responsible for direct markup generation.

A simple POJO can be used as a Java Use-API object, which is instantiated by a specific implementation using the POJO’s default constructor.

In this article, you will find an example of how the Java Use-API can be bind with a component in AEM. In detail, we will be associating the Java Use-API with the header component.


Java Use-API Example Code

Step 1

We will place a small little snippet from lines:2-4 which will bind into the simple POJO; inside of the given component,
/apps/sourcedcode/components/structure/header/header.html

1
2
3
4
5
6
<div class="cmp-header">
  <div data-sly-use.header="HeaderJavaUseExample">
    <h1>${header.path}</h1>
  </div>
  <!--/* header Sightly HTL code implementation below */-->
</div>

Step 2

We will create a simple Java POJO under,
/apps/sourcedcode/components/structure/header/HeaderJavaUseExample.java

Taking a look closer, line:1 has the package that is the same path as the targeted component.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package apps.sourcedcode.components.structure.header;

import com.adobe.cq.sightly.WCMUsePojo;

public class HeaderJavaUseExample extends WCMUsePojo {


    @Override
    public void activate() throws Exception {

    }

    public String getPath() {
        return "This is an example path";
    }


}

Step 3

The Java Pojo extends the WCMUsePojo which makes available all the Global Objects in this naming convention:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
getComponent()
getComponentContext()
getCurrentDesign()
getCurrentNode()
getCurrentPage()
getCurrentSession()
getCurrentStyle()
getDesigner()
getEditContext()
getLog()
getOut()
getPageManager()
getReader()
getRequest()
getResolver()
getResource()
getResourceDesign()
getResourcePage()
getResponse()
getSling()
getSlyWcmHelper()
getWcmmode()
getXssAPI()

Was this post helpful?

Hello, I am an active Adobe Community Advisor & a certified Lead AEM Developer who is currently working as a Senior AEM Full Stack Developer. I have over a decade of overall web engineering experience and many years (more than 6) of AEM experience in practice. I hope to give back to the AEM Full Stack Development community by sharing my knowledge with the world.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top