是什么区别:data-sly-use,data-sly-resource,data-sly-include,和data-sly-template?我正在阅读文档Sightly AEM,我非常困惑.
据我所知:
data-sly-use用于添加js/java要使用doc呈现的文件data-sly-resource 用于注入组件data-sly-include 用于包含其他html文件(?***?)并且,数据狡猾模板令人困惑,如:
<div data-sly-use.nav="navigation.js">${nav.foo}</div>
<section data-sly-include="path/to/template.html"></section>
<template data-sly-template.one>blah</template>
<div data-sly-call="${one}"></div>
Run Code Online (Sandbox Code Playgroud) 我正试图在Sightly中实现递归算法解决河内塔问题.我知道这种方法可能没有很多明显的实际应用,我将其视为一个难题.我最终得到这样的东西:
<sly data-sly-template.step="${@ n, src, aux, dst}" data-sly-unwrap>
<sly data-sly-test="${n > 0}" data-sly-unwrap>
<sly data-sly-call="${step @ n = (n-1), src = src, aux = dst, dst = aux}" data-sly-unwrap/>
${src} -> ${dst}<br/>
<sly data-sly-call="${step @ n = (n-1), src = aux, aux = src, dst = dst}" data-sly-unwrap/>
</sly>
</sly>
<sly data-sly-call="${step @ n = 3, src = 'A', aux = 'B', dst = 'C'}" data-sly-unwrap/>
Run Code Online (Sandbox Code Playgroud)
但是,它没有编译,因为Sightly不支持算术运算符-.我不需要从3到0计数,我们可能会采用相反的方式,因为这里的方向并不重要.我只需要一些具有以下功能的计数器:
我想过用字符串.空字符串为零,'x'为1,'xx'为2,依此类推.我们可以检查字符串是否等于数字(n == 'xxxx').我们甚至可以使用Sightly string formatter来增加它:
${'x{0}' …Run Code Online (Sandbox Code Playgroud) 在Sightly模板语言中,对于Adobe AEM6(CQ),如果条件为真,如何在不重复大量代码/逻辑的情况下,如何向元素添加属性?
例如
<ul data-sly-list="${items}" ${if condition1} class="selected"${/if}>
<li${if condition2} class="selected"${/if}>
Lots of other code here
</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一些我希望相对简单的东西...我有一个组件(让我们称之为包装器组件),它包含另一个组件(让我们称之为内部组件)通过data-sly-resource标签:
<div data-sly-resource="${ 'inner' @ resourceType='/projectname/components/inner' }"></div>
Run Code Online (Sandbox Code Playgroud)
我想用这个标签传递一些额外的参数,特别是一个可以在内部组件模板中选择的参数?我试图指定是否根据通过data-sly-resource调用组件时传入的参数来解包内部模板外部html标记.
在试验和仔细阅读文档后,我无法找到实现这一目标的方法.
有谁知道这是否可能?
非常感谢,
戴夫
我正在使用Sightly,在调查我的应用程序中的一个错误时,我注意到了一个我没想到的行为.
某些链接会在查询字符串中使用&符号进行两次转义.例:
<a href="http://www.google.com?a=1&amp;b=2&amp;c=3">
link with explicit attribute context
</a>
Run Code Online (Sandbox Code Playgroud)
经过仔细检查,结果发现我们在AEM中运行的org.apache.sling.rewriter.Transformer所有href属性中都有一个实现转义特殊字符.
加上Sightly XSS保护,这导致了双重逃逸.
在进一步研究这个问题时,我禁用了变压器,发现Sightly本身有一种奇怪的行为.
鉴于以下三个元素,我希望它们以href相同的方式呈现值(查询字符串被转义,符合W3C标准)
<a href="${'http://www.google.com?a=1&b=2&c=3'}">no explicit context, expression used</a>
<a href="http://www.google.com?a=1&b=2&c=3">no explicit context</a>
<a href="${'http://www.google.com?a=1&b=2&c=3' @ context='attribute'}">
explicit attribute context
</a>
Run Code Online (Sandbox Code Playgroud)
但是,只有最后一个执行转义,我得到
<a href="http://www.google.com?a=1&b=2&c=3">no explicit context, expression used</a>
<a href="http://www.google.com?a=1&b=2&c=3">no explicit context</a>
<a href="http://www.google.com?a=1&amp;b=2&amp;c=3">
explicit attribute context
</a>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,最后一个,使用context='attribute'(唯一一个与&字符做某事的人)两次逃脱&符号,产生无效链接.
这可以通过任意元素和属性名称来实现,所以我想我可以放心地认为这不是一些重写者.
<stargate data-custom="${'http://www.google.com?a=1&b=2&c=3' @ context='attribute'}">
attribute context in custom tag
</stargate>
Run Code Online (Sandbox Code Playgroud)
输出:
<stargate data-custom="http://www.google.com?a=1&amp;b=2&amp;c=3">
attribute context in custom …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
<sly data-sly-use.link="${'core.impl.view.tools.LinkUtils' @ path=properties.targetURL}"></sly>
Run Code Online (Sandbox Code Playgroud)
我想连接properties.linkType到properties.targetURL.
有什么想法可以做到吗?我在网上找到了例子,但它们似乎不适用于我的用例.
在JSTL中,您可以在组件中设置变量,这些变量可在同一请求中的所有其他组件之后使用.在AEM中使用sightly是否有相同的方法在组件之间传递数据?
(我们正在研究的用例是我们希望一个组件通过另一个组件包含它而不是拖入一个解析器时所知道的位置).
我有一个基本的java使用类对象,它扩展了WCMUSE和一个简单的hashmap方法 - 在明显的代码中 - 我有类似的东西
$ {}项
$ {} item.key
$ {} item.value
不起作用 - 如何在明显的代码中返回键/值对
使用data-sly-list我可以在Sightly中迭代列表对象,但是如何检查列表是否为空?data-sly-list只是在空列表对象上没有呈现任何内容,如果列表中没有项目,我需要显示一个替代文本.
谢谢
可以直接在url中请求JSP文件,如HTML文件.但是,JSP文件在运行时编译而HTML文件没有编译(虽然它们都以相同的方式请求).即使是没有动态内容的JSP文件也会在运行时编译,因为它们会在内部转换为servlet.我们可以在JSP文件中包含HTML文件,但不能反过来.有参与向用户提供资源这么多部件(Servlets,Request,Response,Webserver等).
哪个组件决定是否需要通过查看其扩展名来编译文件?
Sightly是一个HTML文件,可以在其正文中包含JSP代码,理想情况下不应该编译,但确实如此.怎么样?