2016-03-08 1 views
3

В AEM 6.1, со структурой, как это:в Adobe CQ (AEM), как можно просмотреть список ресурсов, используя «data-sly-list» и «data-sly-resource»?

- Page 
    - form node 
    - parsys 
     - node 1 
     - node 2 
     - ... 
     - node n 

Исходная форма имеет следующий код, который работает <div data-sly-resource="${ 'parsys' @ resourceType='foundation/components/parsys' }" data-sly-unwrap>

Я пытаюсь обновить компонент формы, который впрыскивает что-то до последнего node n , В виде узла, у меня есть следующий код:

<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, кажется, заставит сервер повесить, с очень высокой загрузкой процессора в то время как браузер ожидает ответ. Я должен завершить процесс сервера и перезапустить его.

Я пробовал <div data-sly-resource="${fields @ resourceType = fields.resourceType}"></div>, но он, кажется, не отображает поля, как ожидалось.

Это правильный способ итерации через узлы?


Обновление: Посмотрел в массивном файле error.log, и, кажется, шип процессора был вызван бесконечной петлей RecursionTooDeepException - что я не вижу, где рекурсия.

+2

обычно это произойдет, если узел содержит ссылку на себя (или его родитель.) – awd

+0

Спасибо @awadheshv за ответ. Я не вижу узел, содержащий референт для себя в CRX. Кроме того, добавляя '@resourceType = fileds.resourceType', он выводит входные компоненты, но не полностью отображается (отсутствующие метки для входов и т. Д.). – Jason

ответ

3

Согласно 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, я настоятельно рекомендую его для тестирования и отладки сценариев, таких, как этот.

+0

Ты мужчина! Добавление «.path» устраняет проблему! Было бы неплохо, если бы сервер мог бросить что-то более значимое в журнал, вместо того, чтобы отображать частично рабочую страницу. – Jason