Model 无法从吊索模型获取/设置数据
我们有吊带模型。比如说Model 无法从吊索模型获取/设置数据,model,aem,jcr,sling,sightly,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 </Slin
@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>
org.apache.sling.models.it.models
之后,我们可以打开该组件的“编辑”对话框,并检查是否插入了一些数据。我们可以在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
有人能在这篇文章中添加标签吗?您的捆绑包可能是从
org.apache.sling.scripting.java
捆绑包导入javax.inject.inject
标签,而不是sling Models捆绑包。在AEM6中,org.apache.sling.scripting.java
bundle和sling Models bundle公开了这个包,如果您的bundle最终从前者获得了导入,sling Models将无法识别您的导入注释
在我的实例中,我通过将org.apache.sling.models.api
添加到maven bundle插件配置中,基本上添加了一个Require bundle指令,强制我的bundle使用org.apache.sling.models.api
bundle,从而绕过了这个问题
为了找到这一点,我从Sling SVN存储库下载了Sling源代码,在IDE中打开它,并将调试器附加到正在运行的AEM实例,并在Sling Models捆绑包中设置断点,以查看该机制如何尝试解析导入注释 我尝试在servlet的帮助下做同样的事情,首先它向我显示null,然后它工作正常,但我不知道你缺少什么。为了供你参考,我为此做了一个git回购。
希望它能帮助您。也有同样的问题,但在我的情况下,模型包没有设置在标签中
如果pom、maven bundle插件中使用了导出包标签,则需要将sling models包添加到该插件中。请注意,一旦删除回购,此答案将不会有太大帮助。