Как напечатать только первые несколько элементов в несколько строк?

#aem #sightly #htl

#aem #sightly #htl

Вопрос:

У меня есть 10 элементов в списке. Я хочу напечатать только первые 5 элементов в списке. Как добавить условие с помощью data-sly-list

Комментарии:

1. Лично я бы сказал, не делайте этого в HTL (Sightly). Sightly не предназначен для «бизнес-логики». Он предназначен для отображения чего-либо. Итак, если вы хотите отобразить только 5 элементов из своего списка, используйте модель (Sling) и возвращайте список только с 5 элементами в шаблон HTL.

Ответ №1:

Вы можете использовать index свойства count или элемента списка с данными, sly-test подобными:

 <ul data-sly-list="${mylist}">
    <li data-sly-test="${itemList.index < 5}">${itemList}</li>
</ul>
  

В качестве альтернативы, если ваш список большой, и вы не хотите его повторять, вы можете определить помощник Use-API, который создает новый список только с первыми 5 необходимыми элементами.

Комментарии:

1. Я не уверен на 100%, но я думаю, что это приведет к повторению всего списка, но отобразит только первые 5 элементов. Что, если в списке 100 000 элементов, и все они повторяются, чтобы отобразить только 5 из них?

2. Правильно, @Jens, чтобы эффективно ограничить размер, кому-то нужно будет написать помощник Use-API, который создает новый список с целевым размером.

3. @Jens по моему опыту, лучше избегать какой-либо логики в HTL, которая не является строго логикой представления. Фильтрация набора элементов должна обрабатываться Java-кодом, где у вас гораздо больше контроля над данными.

4. @toniedzwiedz Я полностью согласен, и это то, что я написал в качестве комментария к вопросу.