1

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

2 回答 2

1

如果我理解正确,您正在尝试从子页面获取图像列表。

为什么不尝试创建一个Page对象,该对象映射到您的当前页面(本质上是当前页面对象),然后使用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();
                         }
            }

您可能需要根据自己的需要进行定制,但希望这可以帮助您入门

于 2013-10-04T05:55:56.413 回答
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标签。

于 2013-10-03T14:37:27.480 回答