Я начал работать в Sightly только на этой неделе, поэтому я довольно новичок в этом. Но, работая с ним, я получил требование передачи данных с внешнего интерфейса на передний план в виде Карты, содержащей ключи типа страницы, и соответствующие значения типа списка, как видно из следующей подписи:Как перемещаться по карте, имеющей ключи типа объекта, с помощью Sightly?
public Map<Page, List<Page>> getComponentMap();
Теперь документация на https://goo.gl/sylWTW утверждает, что карта может быть пройден следующим образом:
<p data-sly-repeat="${myMap}">
<span>key: ${item}</span>
<span>value: ${myMap[item]}</span>
</p>
но, когда я попытался это, она работает, если ключи имеют тип строки, но не если я передаю ключи других типов объектов, например типа «Страница» в моем случае. Я попытался следующий код и работаю для отображения ключей, но бросает Недопустимый аргумент Exception после добавления линии № 6:
1 <div data-sly-use.jcomp="JavaComponent">
2 <ul data-sly-repeat.page="${jcomp.componentMap}">
3 <li>
4 <ul>
5 <li class="parent"><a href="${page.path}.html">${page.title} :</a></li>
6 <li data-sly-repeat.subpage="${jcomp.componentMap[page]}"><a href="${subpage.path}.html">${subpage.title} </a></li>
7 </ul>
8 </li>
9 </ul>
10 </div>
Списков прекрасно работают для любого типа объектов, так и для моего требования о собственности Пейджа, Путь и «Дети», я достиг этого, используя список карт, где Map содержит имена требуемой информации страницы.
Я не знаю, должно ли оно быть таким или нет для Карты, или я делаю что-то неправильно, но было бы очень полезно узнать причину и/или улучшить работу аналогичные случаи.
Можете ли вы обновить этот ответ решением, если его нашли? Спасибо. – radicalmatt