Jsp 如何从AEM中的Java文件中获取给定格式副本的资产路径?

Jsp 如何从AEM中的Java文件中获取给定格式副本的资产路径?,jsp,aem,dam,Jsp,Aem,Dam,我想在我的html页面中将我的图像资源的“cq5dam.thumboil.140.100.png”格式副本显示为缩略图。 对于给定的格式副本,如何在java/JSP中获取DAM中我的一个资产的资产路径此函数将实现此功能 public static String getImageAssetPath(SlingHttpServletRequest slingRequest,String actualDamPath,String renditionParam,String defaultPath) {

我想在我的html页面中将我的图像资源的“cq5dam.thumboil.140.100.png”格式副本显示为缩略图。
对于给定的格式副本,如何在java/JSP中获取DAM中我的一个资产的资产路径

此函数将实现此功能

public static String getImageAssetPath(SlingHttpServletRequest slingRequest,String actualDamPath,String renditionParam,String defaultPath) {
    try {
        if(StringUtils.isNotEmpty(actualPath)){
              Resource resource = slingRequest.getResourceResolver().getResource(actualPath);
              Asset asset = resource.adaptTo(Asset.class);
              String imageAssetPath = asset.getRendition(renditionParam).getPath();
              LOGGER.info("imageAssetPath for given rendition: " + imageAssetPath);
              return imageAssetPath;
       }

    } catch (Exception e) {
        LOGGER.error(e.getMessage());
    }

    return defaultPath;
}
将此函数放在标记库中,以便在JSP中使用

${mytaglib:getAssetPath(slingRequest,property.previewImage,'cq5dam.thumbnail.140.100.png','')}

只是因为很多人只是从SO复制和粘贴代码。此代码至少包含三种可能的
NullPointerException
<如果此路径中没有资源,则code>getResource()可能返回
null
<如果给定的资源不是资源,则代码>自适应将(静默)返回
null
,如果资源没有具有该确切名称的格式副本,则
getRendition()
也将返回
null
。在所有这些情况下,它将返回defaultPath right!这是真的,但仅仅捕获
异常
被认为是不好的做法,我敢打赌你的声纳(或你在公司使用的任何代码质量工具)也会抱怨。为什么不在编写代码时尽可能少地创建异常呢?无论如何关键是我想告诉人们,他们不应该盲目地复制这段代码,而应该意识到可能的NPE