Mas*_*ons 4 model jcr sling aem sightly
我们有吊带模型.例如
@Model(adaptables=Resource.class)
public class MyModel {
@Inject
private String propertyName;
}
public Image getPropertyName) {
return propertyName;
}
Run Code Online (Sandbox Code Playgroud)
我们还添加了
<Sling-Model-Packages>
org.apache.sling.models.it.models
</Sling-Model-Packages>
Run Code Online (Sandbox Code Playgroud)
在此之后,我们可以打开该组件的编辑对话框并检查是否插入了一些数据.我们可以在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>
Run Code Online (Sandbox Code Playgroud)
model.propertyName将为空
任何想法或建议?我如何调试Sling?
任何人都可以在这篇文章中添加标签"Sightly"吗?
我尝试在servlet的帮助下做同样的事情,首先它显示我为null,之后它工作正常,但我不知道你缺少什么.为了你的参考我为此做了一个git repo. https://github.com/gargshivani111/slingmodels
希望它会对你有所帮助.
小智 6
您的捆绑包可能是javax.inject.Inject从捆绑包导入标记org.apache.sling.scripting.java而不是Sling Models捆绑包.在AEM6中,org.apache.sling.scripting.javabundle和Sling Models捆绑包公开此包,如果您的包最终从前者导入,则Sling Models将无法识别您的Import注释.
我在我的实例中通过添加<Require-Bundle>org.apache.sling.models.api</Require-Bundle>maven-bundle-plugin配置来解决这个问题,本质上是添加了一个Require-Bundle指令,强制我的bundle使用org.apache.sling.models.apibundle.
为了找到这个,我从Sling SVN存储库下载了Sling源代码,在IDE中打开它,并将调试器附加到我正在运行的AEM实例,并在Sling Models包中设置断点,以查看该机制如何尝试解析导入注释.
| 归档时间: |
|
| 查看次数: |
2198 次 |
| 最近记录: |