aem - 获取父节点吊索模型中的基础组件属性
问题描述
我刚开始使用 Sling 模型,但在检索父模型中的子节点属性时遇到了问题。 这是我的 JCR 结构
图像节点是一个来自基础组件。我的目标是在 Topbanner 节点中获取图像组件的“文件引用”属性,然后在其漂亮的脚本中。这是我的顶级横幅节点模型:
@Model(adaptables=Resource.class)
public class TopBanner {
@Self @Via("resource")
private Resource bannerBackGroundImage;
private String bannerBgImagePath;
// @Inject
// private String bannerTitle;
// @Inject
// private String bannerDescription;
//
// @Inject
// private String bannerButtonText;
//
// @Inject
// private String bannerButtonLink;
@SlingObject
private ResourceResolver resourceResolver;
@PostConstruct
public void init() {
TopBanner.LOG.info("we are here");
try {
bannerBackGroundImage=resourceResolver.getResource("/apps/ads/components/structure/TopBanner2/Image");
this.bannerBgImagePath=bannerBackGroundImage.adaptTo(ValueMap.class).get("fileReference",String.class);
} catch(SlingException e) {
TopBanner.LOG.info("Error message **** " + e.getMessage());
}
}
// getters omitted
我得到的错误是 Identifier Mypackage.models.TopBanner 不能被 Use API 正确实例化
解决方案
如果您的目标是获取“fileReference”,请尝试以下操作:
@Self
private SlingHttpServletRequest request;
@ValueMapValue(name = DownloadResource.PN_REFERENCE, injectionStrategy = InjectionStrategy.OPTIONAL)
private String fileReference;
然后让我们的资产使用如下:
if (StringUtils.isNotEmpty(fileReference)) {
// the image is coming from DAM
final Resource assetResource = request.getResourceResolver().getResource(fileReference);
if (assetResource != null) {
Asset asset = assetResource.adaptTo(Asset.class);
//Work with your asset there.
}
}
还添加到您的类注释中:
@Model(adaptables = { SlingHttpServletRequest.class })
推荐阅读
- javascript - 连续的 █ 字符在 HTML 中产生彩色线条
- r - 使用 R 中的 BigQuery 进行动态查询
- vuejs2 - 在 Vue.js 中通过 router-link 传递 ID
- c# - WPF Mahapps Hamburger Menu 使用扩展构造函数打开用户控件
- python - 如何在 OpenCV 的矩形中使用归一化坐标
- php - 如何使用 PHP [Discord] 发送嵌入式 Webhook
- android - Activity 暂停并重新创建后,如何停止 Activity 附加的 AlertDialog 继续重新出现在 Activity 上?
- entity-framework - 针对 SQL Server Compact DB 的简单实体框架查询引发异常
- magento - 更新产品配置更改产品页面 Magento2 的分期付款价格
- azure - 如何使用 Azure 市场中的 ARM 模板部署 Azure Function 应用程序,包括代码