CQ5 - 如何获取页面图像

时间:2013-10-03 12:39:40

标签: java image cq5

我对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;
}

2 个答案:

答案 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 标记