HippoCMS Rest服务不返回图像链接

时间:2015-11-10 06:29:58

标签: rest hippocms

我是Hippo CMS的新蜜蜂。我正在使用版本10,我使用angularJS服务来使用#34;横幅广告"我是通过HippoCms创建的。

这是我通过Hippo的休息Api经理创建的横幅的其余网址:

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中创建的轮播中。请指导我如何生成图像也进入上面的横幅响应。

更新

尽管通过&#39; localhost:8080 / cms&#39;它显示上传的图像,但无法通过响应访问图像:

@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 + "]]>";
}

}

附加问题:重写器中使用的挂载点是什么? (其他名字或gogreen ??)

请帮忙!

1 个答案:

答案 0 :(得分:1)

您已使用Essentials Rest设置工具。这会生成示例或演示Rest实现。生成设置后,开发人员应始终希望扩展和优化结果。

默认情况下,为当前安装生成此设置中富文本内的链接,这是其余安装。由于图像不能通过其余装载获得,HST生成了/ pagenotfound URL。

如果您检查Bean的Bean,您会看到HippoHtml字段使用了HippoHtmlAdapter。检查它的代码:它使用SimpleContentRewriter。创建自己的适配器版本并使用ContentRewriter的扩展版本。覆盖#rewriteBinaryLink方法。在其中调用super方法,但将站点挂载指定为目标挂载。

我认为在网站安装中添加hst:别名是个好主意,因此您可以使用别名引用该网站。