15. Java Use API
Format to call in html file-
<sly data-sly-use.javaUseClassName="apps.mycomponent.MyComponent @title='Test Title'">${javaUseClassName.someProperty} </sly>
Here class name is used without extension. You cannot pass argument to a method. But it is possible to pass argument at the activation of the Java/Javascript class.
16. JavaScript Use API
<sly data-sly-use.jsUseClassName="${'mycomponent.js' @ fieldValue =resource.valueMap}">${jsUseClassName.jsonVal}</sly>
Sample js file content -
"use strict";
use(function () {
var nodeJson = JSON.parse(this.fieldValue);
var title = currentPage.getTitle();
var description = properties.get("jcr:description", "default desc");
return {
jsonVal: nodeJson,
title: title,
description: description
}
});
Sample js file content -
"use strict";
use(function () {
var nodeJson = JSON.parse(this.fieldValue);
var title = currentPage.getTitle();
var description = properties.get("jcr:description", "default desc");
return {
jsonVal: nodeJson,
title: title,
description: description
}
});
17. Template & Call
Template blocks can be used like function calls: in their declaration they can get parameters, which can then be passed when calling them. They also allow recursion. This consist of following steps:
Calling the dynamic template with parameters-
<div data-sly-call="${templateTwo @ title=properties.jcr:title, resource=resource.parent}"></div>
A. Define A Template: data-sly-template
Template can be defined in a static or dynamic way-
<template data-sly-template.templateOne>blah</template> <!--/* Static Template */-->
<template data-sly-template.templateTwo="${ @ title, resource='The resource of parent node'}"><h1>${title}</h1>
<p>Parent: ${resource.name}</p></template> <!--/* Dynamic Template, with parameter- title and resource */-->
Note that the host element and its content are not output by HTL.
<p>Parent: ${resource.name}</p></template> <!--/* Dynamic Template, with parameter- title and resource */-->
Note that the host element and its content are not output by HTL.
B. Call The Template: data-sly-call
Calling a static template defined above-
<div data-sly-call="${templateOne}"></div>
Calling the dynamic template with parameters-
<div data-sly-call="${templateTwo @ title=properties.jcr:title, resource=resource.parent}"></div>
C. Externalizing The Template (Optional Step): data-sly-use
When templates are located in a separate file, they can be loaded with data-sly-use:
<div data-sly-use.lib="templateLib.html" data-sly-call="${lib.templateOne}"></div>
<div data-sly-call="${lib.templateTwo@ title=properties.jcr:title, resource=resource.parent}"></div>
This comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDelete