Сервис HippoCMS Rest не возвращает ссылки на изображения

Я новичок в Hippo CMS. Я работаю над версией 10 и использую службу angularJS для использования остальных URL-адресов для «баннеров», которые я создал с помощью HippoCms.

Это мой URL-адрес Rest для баннеров, созданных с помощью Rest Api Manager от Hippo:

http://localhost:8080/site/stbetrest/Banner?_type=json

и ответ, который я получаю при использовании ссылки:

    {
        "pageSize": 10,
        "total": 3,
        "items": [
            {
                "content": "<![CDATA[\r\n\r\n          <p>Banner description</p>\r\n\r\n          \r\n]]>",
                "title": "Sample banner"
            },
            {
                "content": "<![CDATA[<p>10 Simple Steps to Green Your Office:</p>\n\n<p>&nbsp;</p>\n\n<p>
<img src=\"/site/pagenotfound\" /></p>]]>",
                "title": "10 Simple Steps to Green Your Office"
            },
            {
                "content": "<![CDATA[<p>How to Green Your Dorm Room</p>]]>",
                "title": "How to Green Your Dorm Room"
            }
        ],
        "currentPage": 1,
        "totalPages": 1
    }

Проблема здесь в том, что я не вижу изображения, которые я использовал в баннерных документах в Бегемоте. Я хочу, чтобы эти изображения/ссылки загружались в карусель, созданную в AngularJs. Пожалуйста, подскажите, как генерировать изображения также в приведенном выше ответе баннера.

ОБНОВЛЕНИЕ:

Хотя через «localhost: 8080/cms» он показывает загруженные изображения, но не может получить доступ к изображению через ответ:

@XmlRootElement(name = "banner")
@XmlAccessorType(XmlAccessType.NONE)
@HippoEssentialsGenerated(internalName = "gogreen:bannerdocument")
@Node(jcrType = "gogreen:bannerdocument")
public class Banner extends BaseDocument {
    @XmlElement
    @HippoEssentialsGenerated(internalName = "gogreen:title")
    public String getTitle() {
        return getProperty("gogreen:title");
    }

    @XmlJavaTypeAdapter(HippoHtmlAdapter.class)
    @XmlElement
    @HippoEssentialsGenerated(internalName = "gogreen:content")
    public HippoHtml getContent() {
        return getHippoHtml("gogreen:content");
    }

    @HippoEssentialsGenerated(internalName = "gogreen:link")
    public HippoBean getLink() {
        return getLinkedBean("gogreen:link", HippoBean.class);
    }

    @XmlJavaTypeAdapter(KerkRestAdapter.class)
    @XmlElement
    @HippoEssentialsGenerated(internalName = "gogreen:image")
    public Kerk getImage() {
        return getLinkedBean("gogreen:image", Kerk.class);
    }
}

и мой рерайтер контента:

    public class RestContentRewriter extends SimpleContentRewriter {
   @Override
    protected String rewriteBinaryLink(String binaryLinkSrc, Node node, HstRequestContext requestContext, Mount targetMount) {
        return super.rewriteBinaryLink(binaryLinkSrc, node, requestContext, requestContext.getMount("site"));

    }

И мой адаптер:

public class KerkRestAdapter extends XmlAdapter<String, HippoHtml> {

@Override
public HippoHtml unmarshal(String representation) throws Exception {
    throw new UnsupportedOperationException("Unmarshalling not implemented.");
}


@Override
public String marshal(HippoHtml html) throws Exception {
    if (html == null) {
        return null;
    }

    final HstRequestContext context = RequestContextProvider.get();
    //final RestContentRewriter contentRewriter = new RestContentRewriter();
    final ContentReWriter<String> contentRewriter = new RestContentRewriter();

    final String rewrite = contentRewriter.rewrite(html.getContent(), html.getNode(), context, context.getMount("api")); 
    return "<![CDATA[" + rewrite + "]]>";
}

}

дополнительный вопрос: какую точку монтирования использовать в рерайтере? (Название маунта Rest или gogreen??)

Пожалуйста помоги !


person Nomesh DeSilva    schedule 10.11.2015    source источник


Ответы (1)


Вы использовали средство настройки Essentials Rest. Это генерирует пример или демонстрационную реализацию Rest. После создания установки разработчик всегда должен хотеть расширить и уточнить результат.

Ссылки внутри форматированного текста в этой настройке по умолчанию генерируются для текущего монтирования, которое является остальным монтированием. Поскольку образы недоступны при монтировании остальных файлов, HST сгенерировал URL-адрес /pagenotfound.

Если вы проверите bean-компонент для баннера, вы увидите, что для поля HippoHtml используется HippoHtmlAdapter. Проверьте его код: он использует SimpleContentRewriter. Создайте собственную версию адаптера и используйте расширенную версию ContentRewriter. Переопределите метод #rewriteBinaryLink. В нем вызовите метод super, но укажите монтирование сайта в качестве целевого монтирования.

Я думаю, что добавление hst: alias к монтированию сайта — хорошая идея, чтобы вы могли ссылаться на сайт с псевдонимом.

person b.leunis    schedule 10.11.2015