model - 无法从吊索模型获取/设置数据

标签 model aem jcr sling sightly

我们有吊索模型。例如

@Model(adaptables=Resource.class)
public class MyModel {

@Inject
private String propertyName;
}
public Image getPropertyName) {
    return propertyName;
}

我们还添加了
<Sling-Model-Packages>
  org.apache.sling.models.it.models
</Sling-Model-Packages>

在此之后,我们可以打开该组件的编辑对话框并检查是否插入了一些数据。我们可以在 JCR 中看到这些数据
但是当我们试图通过 Sightly 获取 propertyName 的内容时
<div class="feature-wrapper" data-sly-use.model="org.apache.sling.models.it.models.MyModel">
<div data-sly-test="${model.propertyName}" data-sly-unwrap>

model.propertyName 将为空

任何想法或建议?
我如何调试 Sling?

任何人都可以在这篇文章中添加标签“Sightly”吗?

最佳答案

您的包可能从 javax.inject.Inject 包中导入 org.apache.sling.scripting.java 标签,而不是 Sling Models 包。在 AEM6 中,org.apache.sling.scripting.java 包和 Sling Models 包公开了这个包,如果你的包最终从前者获得导入,Sling Models 将无法识别你的导入注释。

通过将 <Require-Bundle>org.apache.sling.models.api</Require-Bundle> 添加到 maven-bundle-plugin 配置中,我能够在我的实例中解决这个问题,实际上是添加了一个 Require-Bundle 指令,强制我的包使用 org.apache.sling.models.api 包。

为了找到这个,我从 Sling SVN 存储库下载了 Sling 源代码,在 IDE 中打开它,并将调试器附加到我正在运行的 AEM 实例并在 Sling 模型包中设置断点以查看该机制如何尝试解决导入注释。

关于model - 无法从吊索模型获取/设置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25324415/

相关文章:

google-app-engine - 在 Google App Engine 中更新模型模式?

javascript - 访问嵌套类方法

aem - 访问jcr :content propeties from page node

java - 包含 CQ5 组件时无法创建 cq 节点

java - CQ5 无法更新过时的项目 : item. save() javax.jcr.InvalidItemStateException : Unable to update a stale item: item. save()

ruby-on-rails - 我应该在删除操作 : user. delete 或 user.destroy 中使用哪个?

cocoa - 创建模型类

java - 进行 Junit 测试时,如何在 AEM Sling 模型中的节点对象中 setProperty()?

java - mixinproperties 的 JCR 查询

java - DMS的JCR与JPA:性能,优点,缺点