Я не проверял это, поэтому я не уверен, что он работает на 100%.
Прежде всего, вам понадобится SlingModel для представления элементов мультиполя:
@Model(adaptables = Resource.class)
public class HeaderPrimaryLink {
@Inject
private Resource resource;
@Inject
@Optional
private String title;
@Inject
@Optional
private String linkURL;
public String getTitle() {
return title;
}
public String getLinkURL() {
return linkURL;
}
}
Затем в вашей модели «Заголовок» вы можете получить список моделей «ЗаголовокPrimaryLink», который будет содержать все элементы, заполненные в мультиполе:
...
private String heading,
altText;
private List<HeaderPrimaryLink> links;
@PostConstruct
...
Я не уверен, как мультиполе хранится под узлом политики (если вы можете опубликовать изображение узлов в CRX, это поможет), но если предположить, что мультиполе хранится как узлы под ресурсом политики, я бы попробуйте получить этот узел и заполнить список (примерно так):
Resource multifieldResource = resourceResolver.getResource(contentPolicy.getPath() + "/headerPrimaryLinks");
if (multifieldResource != null) {
for (Resource currentResource : multifieldResource.getChildren()) {
links.add(currentResource.adaptTo(HeaderPrimaryLink.class));
}
}
А потом в HTML:
<sly data-sly-use.header="com.uchealth.aem.core.models.Header">
<ul data-sly-list="${header.links}">
<li>
<a target="_blank" href="${item.linkURL}">${item.title}</a>
</li>
</ul>
</sly>
Надеюсь, это поможет.