我对CQ5很新,我遇到了以下问题。
我正在尝试显示包含子页面背后图像的列表。我设法使列表本身工作,但图像有问题,它的路径不正确。
到目前为止,我已经有了这个
<div class="img-list">
<img src="${list.img}" />
</div>
和
public class ImageList {
private String img = "";
private Page listItem;
String extension;
Resource r;
public ImageList(Page p ) {
this.listItem = p;
this.r = listItem.getContentResource("image");
}
public String getImg() {
if (r != null) {
//Image image = new Image(r);
img = r.getPath();
}
return img;
}
public void setImg (String i) {
this.img = i;
}
}
但这不起作用。有人可以帮帮我吗?
提前致谢
编辑,让它使用以下解决方案:
public String getImg() {
String imagePath = "";
if (r != null) {
Image image = new Image(r);
imagePath = (String)listItem.getPath()+".img.png"+ image.getSuffix();
}
return imagePath;
}
答案 0 :(得分:1)
如果我理解正确,您正试图从子页面获取图像列表。
为什么不尝试创建页面对象,该对象映射到当前页面(实际上是当前页面对象),然后使用 listChildren 列出所有子页面的方法。然后你可以使用page.getContentResorce(“image”)方法,创建一个图像对象,然后返回与每个子页面关联的图像的路径。
这样的事情: -
Iterator<Page> childPageIterator = Currentpage.listChildren(new PageFilter(request));
while(pageIterator.hasNext())
{
Page childPage = pageIterator.next();
Resource r = page.getContentResource("image");
if (r != null) {
Image image = new Image(r);
String imagePath = (String)contentpage.getPath()+".img.png"+ image.getSuffix();
}
}
您可能需要根据自己的需要定制,但希望这可以让您开始
答案 1 :(得分:0)
您正在尝试获取资源的路径(图像节点)并将其提供给图像标记的src属性,而不是提供图像的实际路径。
通过更改getImg()方法来实现此目的的一种方法,如下所示
public String getImg() {
if (r != null) {
Node node = r.adaptTo(Node.class);
if(node.hasProperty("fileReference"){
img = node.getProperty("fileReference").getString();
}
}
return img;
}
或者您可以使用 com.day.cq.wcm.foundation.Image类通过传递资源对象来绘制图像,而不是使用 img 标记