AEM - Как вернуть информацию о странице в формате JSON - PullRequest
0 голосов
/ 13 октября 2018

Мне нужно отобразить заголовок и имя всех дочерних и дочерних страниц по заданному пути в формате JSON.Пожалуйста, предоставьте реализацию.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Пожалуйста, обратитесь к ссылке ниже, которая может быть полезна:
http://www.nateyolles.com/blog/2015/12/converting-aem-sling-resources-to-json.

Помимо вышеупомянутого решения вы также используете рекурсивный уровень для получения данных в формате JSON, например / content / we-retail / language-masters / ru. { заполнитель }. json

замените заполнитель уровнем узлов, который вы хотите распечатать, и верните JSON назад, где это необходимо.

Чтобы узнать больше о рендеринге данных в разных форматах, см .: https://sling.apache.org/documentation/bundles/rendering-content-default-get-servlets.html

0 голосов
/ 13 октября 2018

Сначала вы должны что-то попробовать сами, затем вы зваете на помощь, а не на полное решение! В любом случае, там есть пара решений.

Согласно Adobe здесь вы можете реализоватьИнформация о странице в формате JSON:

package com.adobe.example;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.Reference;

import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;

import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;

import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageInfoProvider;

@Component(metatype = false)
@Properties({
    @Property(name="service.description", value="Returns the public URL of a resource.")
})
@Service
public class PageUrlInfoProvider implements PageInfoProvider {


    @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY)
    private com.day.cq.commons.Externalizer externalizer;

    private String fetchExternalUrl(ResourceResolver rr, String path) {
        return externalizer.publishLink(rr, path);
    }

    public void updatePageInfo(SlingHttpServletRequest request, JSONObject info, Resource resource)
            throws JSONException {

        Page page = resource.adaptTo(Page.class);
        JSONObject urlinfo = new JSONObject();
        urlinfo.put("publishURL", fetchExternalUrl(null,page.getPath()));
        info.put("URLs",urlinfo);
    }
}

Или вы можете попробовать Страница для решения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...