Как получить свойства страницы, используя модель слинга в AEM 6.3?
Я пытаюсь получить свойства страницы, используя Sling Models в AEM 6.3, но всегда получаю ноль.
resultsRootPath = getCurrentPage().getProperties().get("ResultsRootPath", String.class);
Путь собственности:
/components/content/results/cq:dialog/content/items/column/items/ResultsRootPath
Не могли бы вы сообщить мне правильные способы определения стоимости имущества с помощью Sling Models?
5 ответов
Вы также можете сделать это:
@Model(adaptables = {SlingHttpServletRequest.class,Resource.class})
public class MyCustomModel{
@Inject
private InheritanceValueMap pageProperties;
@Inject
private ValueMap properties;
@PostConstruct
public void activate() {
String pageString = pageProperties.getInherited("myproperty", "default"); //InheritanceValueMap gives pageProperties Value Map and getInherited is used to fetch a particular property.
}
Обратитесь к этому для получения дополнительной информации: http://blogs.adobe.com/experiencedelivers/experience-management/valuemap-and-his-friend/
Альтернатива этим другим вариантам, но может быть проще. модели знают, на какой странице они основаны, на основе SlingHttpServletRequest в разделе @Model
@Model(
adaptables = {Resource.class, SlingHttpServletRequest.class, SlingHttpServletResponse.class},
defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL
)
public class ModelClassName {
@Inject
private Page currentPage;
Приватная страница @Inject currentPage автоматически захватит страницу и предоставит вам доступ ко всем свойствам и т. Д.
Чтобы воспользоваться аннотацией для конкретного инжектора, лучшим способом будет:
@Model(adaptables = SlingHttpServletRequest.class)
public class MyModel {
@ValueMapValue
private String ResultsRootPath;
public String getResultsRootPath(){ return ResultsRootPath; }
}
Чтобы упомянуть, пожалуйста, используйте верблюжий чехол для свойств asin ResultsRootPath.
В своем классе модели вы можете создать поле, подобное этому:
@Model(adaptables = Page.class)
public class ResultsPageModel {
@Inject
@Via("contentResource")
@Named("ResultsRootPath")
private Resource resultsRootPath;
}
@Model(adapables = {Resource.class, SlingHttpServletRequest.class, SlingHttpServletResponse.class},defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL) открытый класс ModelClassName {
@Inject
private Page currentPage;