У меня есть две модели Sling:
@Model(adaptables = {SlingHttpServletRequest.class, Resource.class}, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class VideoGridItem {
@SlingObject
private Resource resource;
@SlingObject
private SlingHttpServletRequest slingHttpServletRequest;
@PostConstruct
public void initVideoGridItem() {
String[] selectors = slingHttpServletRequest.getRequestPathInfo().getSelectors();
insideGrid = selectors == null || selectors.length == 0 ? false : Arrays.stream(selectors).anyMatch("grid"::equals);
url = URLUtils.addHTMLIfPage(resource.getResourceResolver(), linkUrl);
}
}
и
@Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class VideoListing {
private List<String> videoResourcePaths;
@PostConstruct
final void init() {
}
}
Я вызываю компонент VideoGridItem (технически ресурс, который ссылается на модель) из компонента листинга видео с использованием HTL:
<sly data-sly-list.videoResourcePath="${model.videoResourcePaths}">
<sly data-sly-resource="${videoResourcePath @ wcmmode='disabled', addSelectors='grid'}" data-sly-unwrap="true"></sly>
</sly>
Теперь, когда я отлаживаю код, внутри initVideoGridItem slingHttpServletRequest имеет значение null.Справедливо, этот ресурс не запрашивается напрямую, но мне все еще нужно иметь доступ к селектору «сетка».Есть ли способ, которым я могу сделать это из VideoGridItem.resource?