Hi All,
I want to check if the resource exists or not using the sightly code. I was going through the documentation which consists of the global objects used in sightly : https://experienceleague.adobe.com/docs/experience-manager-htl/content/global-objects.html?lang=en.
I understand, there is a global object 'resolver' but no document how to use it.
Can someone please share the documentation or an example of how to use it in sightly code to get a resource.
Thanks in advance!
Solved! Go to Solution.
Hi Hiral,
Sightly is HTML expression/templating system. It's all about presentation not complex algo's or service calls.
You can invoke Sling Model that will do this check for you.
Indeed, you should create SlingModel to do all the logical checks and use Sightly to simply print out model with minimal amount of logic.
Regards,
Peter
Sightly/HTL Variables
|
AEM Backend Objects
|
Documentation
|
---|---|---|
component
|
com.day.cq.wcm.api.components.Component
|
|
componentContext
|
com.day.cq.wcm.api.components.ComponentContext
|
|
currentDesign
|
com.day.cq.wcm.api.designer.Design
|
|
currentNode
|
javax.jcr.Node
|
|
currentPage
|
com.day.cq.wcm.api.Page
|
|
currentSession
|
javax.servlet.http.HttpSession
|
|
currentStyle
|
com.day.cq.wcm.api.designer.Style
|
|
designer
|
com.day.cq.wcm.api.designer.Designer
|
|
editContext
|
com.day.cq.wcm.api.components.EditContext
|
|
log
|
org.slf4j.Logger
|
|
out
|
java.io.PrintWriter
|
|
pageManager
|
com.day.cq.wcm.api.PageManager
|
|
reader
|
java.io.BufferedReader
|
|
request
|
org.apache.sling.api.SlingHttpServletRequest
|
|
resolver
|
org.apache.sling.api.resource.ResourceResolver
|
|
resource
|
org.apache.sling.api.resource.Resource
|
|
resourceDesign
|
com.day.cq.wcm.api.designer.Design
|
|
resourcePage
|
com.day.cq.wcm.api.Page
|
|
response
|
org.apache.sling.api.SlingHttpServletResponse
|
|
sling
|
org.apache.sling.api.scripting.SlingScriptHelper
|
|
slyWcmHelper
|
com.adobe.cq.sightly.WCMScriptHelper
|
|
wcmmode
|
com.adobe.cq.sightly.SightlyWCMMode
|
|
xssAPI
|
com.adobe.granite.xss.XSSAPI
|
documentation |
Thanks @Manu_Mathew_ for a quick reply.
These are the documentation for class/API. I am looking for the global object 'resolver' to be used in sightly code.
It would be really helpful if you could share a few examples to validate if the resource exists or not using this global objects.
Thanks,
Hiral
Is there a way to do resolver.getResource(path) in sightly?
@hiral-vasa I have not used it yet, however, may be you can try something like -
<sly data-sly-test="${resource['image/jcr:primaryType']}">
<sly data-sly-resource="${'image' @ resourceType='test/components/content/image'}"></sly>
</sly>
or use the methods using member variables for eg. if "resolver" has a getter method "getResource" then you can probably use "${resolver.resource}". However, is recommended to use a sling model for such operations.
Hi Hiral,
Sightly is HTML expression/templating system. It's all about presentation not complex algo's or service calls.
You can invoke Sling Model that will do this check for you.
Indeed, you should create SlingModel to do all the logical checks and use Sightly to simply print out model with minimal amount of logic.
Regards,
Peter
When implementing AEM component's you should be organized with coding standards. The front-end, Sightly(.html), should only focus on the VIEW. While the backend, Sling Model should handle complicated computation logic as the MODEL. If you would like to compare the JCR rather a resource exist, I suggest you do it from the backend; here in the backend, if you have complicated logic, you can write unit tests to ensure that the code coverage is set the to expectation of your organization.
Using Sling Model annotations, you can obtains the resoureceResolver, which can resolve and check wether the other resourceExists. If the path that you are trying to check is living in an restricted area in the AEM JCR file path, then I would recommend you to use a SystemUser to obtain the resourceResolver to resolve the resource; follow the articles below to programmatically configure a system user for your AEM environment.
Checkout these blog articles below:
Sling Model Cheat Sheet - AEM Sling Model Injectors Annotations Cheat Sheet Reference Guide - Sourced Code
Create AEM System Users with Code - Create System | Service Users in AEM 6.5 with Code Configurations - Sourced Code
Views
Likes
Replies