我是河马CMS的新蜜蜂。我正在开发版本10,并使用angularJS服务来使用我通过HippoCms创建的“横幅”的rest url。
这是通过Hippo的Rest Api Manager创建的横幅的Rest URL:
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> </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?)
请帮帮忙!
发布于 2015-11-10 12:15:31
您已经使用了“基本Rest”设置工具。它生成一个示例或演示Rest实现。在生成设置之后,开发人员应该始终希望扩展和改进结果。
默认情况下,此设置中的富文本中的链接是为当前挂载(即rest挂载)生成的。由于这些映像无法通过rest挂载获得,所以HST生成了/pagenotfound URL。
如果您检查bean的bean,就会看到对于HippoHtml字段使用了一个HippoHtmlAdapter。检查它的代码:它使用SimpleContentRewriter。创建您自己的适配器版本,并使用ContentRewriter的扩展版本。重写#rewriteBinaryLink方法。其中调用超级方法,但指定站点挂载作为目标挂载。
我认为在站点挂载中添加一个hst:别名是个好主意,所以您可以用别名引用站点。
https://stackoverflow.com/questions/33624160
复制相似问题