sling - 如何仅在 Sightly 模板中包含存在的资源?

标签 sling sightly

我想用 data-sly-resource包含资源,但前提是它存在,例如

<div class="pull-right" data-sly-resource="/content/blog/stats"></div>

如果资源不存在,脚本执行失败并显示以下错误消息:找不到 servlet 来处理资源/content/blog/stats 。从请求进度列表中我可以看到它是一个 SyntheticResource :

TIMER_START{resolveServlet(SyntheticResource, type=null, path=/content/blog/stats)}



仅当资源存在时,如何有条件地包含资源?

最佳答案

在这种情况下,最好的解决方案是允许您的 redis/stats组件正确处理 Resource 时的情况它应该渲染的是 SyntheticResource或者,更一般地说,不提供任何属性。

因此,调用 Sightly 代码段应该是:

<div class="pull-right" data-sly-resource="${'/content/blog/stats' @ resourceType='redis/stats'}"></div>

这会强制由您的 redis/stats 进行渲染。组件,即使 /content/blog/stats资源不存在(好吧,Sling 将返回 SyntheticResource ,就像您提到的那样)。

在您的 redis/stats组件,然后您可以尝试此保护措施:
<div class="blog-stats" data-sly-test="${properties}">
<!--/* This whole block will only be rendered if properties is not empty */-->
</div>

这将呈现 div.blog-stats仅当属性映射不为空 [0] 时。

[0] - https://github.com/Adobe-Marketing-Cloud/sightly-spec/blob/1.1/SPECIFICATION.md#225-test

关于sling - 如何仅在 Sightly 模板中包含存在的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33485920/

相关文章:

dialog - 如何在 aem 6 触摸对话框中创建单选按钮

aem - SlingModel 中的异常处理并在 AEM 中使用 Pojo?

jersey - 如何在 Adob​​e CQ 中部署和访问 Jersey REST OSGi 包?

aem - 将参数传递给 data-sly-include in sightly/HTL

javascript - AEM:使用 JavaScript Use-API 访问 DAM 中的 JS 文件

aem - HTL 无需 Getter 即可访问属性

java - AEM 6.1 : Enable Rich text editor (RTE) plugins on Touch UI

Linux |重庆5.6 |类加载器问题

java - 无法获取类型为 'interface org.apache.sling.rewriter.Transformer' 的类 'linkrewriter' 的组件