在 AEM 6.1 中,结构如下:
- Page
- form node
- parsys
- node 1
- node 2
- ...
- node n
原始表格有以下有效的代码
<div data-sly-resource="${ 'parsys' @ resourceType='foundation/components/parsys' }" data-sly-unwrap>
我正在尝试更新在最后一个 node n
之前注入(inject)内容的表单组件.在表单节点上,我有以下代码:
<div data-sly-list.children="${resource.listChildren}">
<div data-sly-list.fields="${children.listChildren}">
<div data-sly-test=${fieldsList.last}> DO SOMETHING BEFORE LAST NODE</div>
<div data-sly-resource="${fields}"></div>
</div>
</div>
data-sly-resource
似乎导致服务器挂起,在浏览器等待响应时 cpu 使用率非常高。我必须终止服务器进程并重新启动它。
我试过了<div data-sly-resource="${fields @ resourceType = fields.resourceType}"></div>
但它似乎没有按预期呈现字段。
这是遍历节点的正确方法吗?
更新:查看了大量的 error.log 文件,似乎 CPU 峰值是由 RecursionTooDeepException 的无限循环引起的 - 我看不到递归在哪里。
最佳答案
根据Sightly documentation on the Resource block statement ,您需要传入资源的路径,可以是相对路径,也可以是绝对路径。我可以通过更改 <div data-sly-resource="${fields}"></div>
使您的代码正常工作至 <div data-sly-resource="${fields.path}"></div>
.
<div data-sly-list.children="${resource.listChildren}">
<div data-sly-list.fields="${children.listChildren}">
<div data-sly-test=${fieldsList.last}> DO SOMETHING BEFORE LAST NODE</div>
<div data-sly-resource="${fields.path}"></div>
</div>
</div>
如果您还没有下载 Sightly REPL ,我强烈建议使用它来测试和调试此类场景。
关于aem - 在 Adobe CQ (AEM) 中如何使用 `data-sly-list` 和 `data-sly-resource` 迭代资源列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35876744/