我是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> </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 ??)
请帮忙!
答案 0 :(得分:1)
您已使用Essentials Rest设置工具。这会生成示例或演示Rest实现。生成设置后,开发人员应始终希望扩展和优化结果。
默认情况下,为当前安装生成此设置中富文本内的链接,这是其余安装。由于图像不能通过其余装载获得,HST生成了/ pagenotfound URL。
如果您检查Bean的Bean,您会看到HippoHtml字段使用了HippoHtmlAdapter。检查它的代码:它使用SimpleContentRewriter。创建自己的适配器版本并使用ContentRewriter的扩展版本。覆盖#rewriteBinaryLink方法。在其中调用super方法,但将站点挂载指定为目标挂载。
我认为在网站安装中添加hst:别名是个好主意,因此您可以使用别名引用该网站。