首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HippoCMS Rest服务不返回图像链接。

HippoCMS Rest服务不返回图像链接。
EN

Stack Overflow用户
提问于 2015-11-10 06:29:58
回答 1查看 397关注 0票数 0

我是河马CMS的新蜜蜂。我正在开发版本10,并使用angularJS服务来使用我通过HippoCms创建的“横幅”的rest url。

这是通过Hippo的Rest Api Manager创建的横幅的Rest URL:

代码语言:javascript
复制
http://localhost:8080/site/stbetrest/Banner?_type=json

当我被消耗掉的时候,我得到的回应是:

代码语言:javascript
复制
    {
        "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”显示上传的图像,但无法通过响应访问图像:

代码语言:javascript
复制
@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);
    }
}

我的内容改写者是:

代码语言:javascript
复制
    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"));

    }

我的适配器是:

代码语言:javascript
复制
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?)

请帮帮忙!

EN

回答 1

Stack Overflow用户

发布于 2015-11-10 12:15:31

您已经使用了“基本Rest”设置工具。它生成一个示例或演示Rest实现。在生成设置之后,开发人员应该始终希望扩展和改进结果。

默认情况下,此设置中的富文本中的链接是为当前挂载(即rest挂载)生成的。由于这些映像无法通过rest挂载获得,所以HST生成了/pagenotfound URL。

如果您检查bean的bean,就会看到对于HippoHtml字段使用了一个HippoHtmlAdapter。检查它的代码:它使用SimpleContentRewriter。创建您自己的适配器版本,并使用ContentRewriter的扩展版本。重写#rewriteBinaryLink方法。其中调用超级方法,但指定站点挂载作为目标挂载。

我认为在站点挂载中添加一个hst:别名是个好主意,所以您可以用别名引用站点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33624160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档