【问题标题】:CQ5 - How to get the page ImageCQ5 - 如何获取页面图片
【发布时间】:2013-10-04 14:45:43
【问题描述】:

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

【问题讨论】:

    标签: java image aem


    【解决方案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();
                             }
                }
    

    您可能需要根据自己的需要进行调整,但希望这可以帮助您开始

    【讨论】:

    • 带孩子不是问题。问题是显示图像。我刚刚尝试了您的解决方案的一些修改版本,输出是 。另外,我不是想从当前页面获取孩子。我正在使用不同页面的子页面。
    • 没关系,打了一个小错字,我只是用了 String imagePath = (String)contentpage.getPath()+".img.png"+ image.getSuffix();在我原来的解决方案中,它有效,谢谢!
    【解决方案2】:

    您正在尝试获取资源(图像节点)的路径并将其提供给图像标签的 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标签.

    【讨论】:

    • 感谢您的回复!但是当我这样做时,输出是 ,仅此而已。而且我确信这些子页面上有一张图片。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多