我们有吊索模型。例如
@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/