【问题标题】:Cannot get/set data from sling models无法从吊索模型获取/设置数据
【发布时间】:2014-10-09 01:42:04
【问题描述】:

我们有吊索模型。例如

@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”吗?

【问题讨论】:

    标签: model aem jcr sling sightly


    【解决方案1】:

    我尝试在 servlet 的帮助下做同样的事情,首先它显示我为 null,之后它工作正常,但我不知道你缺少什么。供你参考,我为此做了一个 git repo。 https://github.com/gargshivani111/slingmodels

    希望对你有所帮助。

    【讨论】:

    【解决方案2】:

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

    我可以通过在 maven-bundle-plugin 配置中添加 &lt;Require-Bundle&gt;org.apache.sling.models.api&lt;/Require-Bundle&gt; 来解决这个问题,本质上是添加一个 Require-Bundle 指令,强制我的包使用 org.apache.sling.models.api 包。

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

    【讨论】:

      【解决方案3】:

      有同样的问题,但在我的情况下,模型包没有在 标记中设置。

      如果在pom、maven-bundle-plugin中使用Export-Package标签,需要添加sling模型包。

      【讨论】:

        猜你喜欢
        • 2014-09-28
        • 2023-02-20
        • 2018-06-09
        • 2019-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-08
        • 1970-01-01
        相关资源
        最近更新 更多