我想在我们基于吊索的项目中设置吊索模型(实际上它是一个 AEM 项目)。我按照 http://sling.apache.org/documentation/bundles/models.html 上的说明进行操作但不幸的是,资源上的 adapTo 方法返回 null,所以我认为我在 OSGI 配置设置中犯了一些错误。不幸的是我没有收到任何日志文件错误,所以现在我需要一些帮助:) 我们使用 maven-bundle-plugin,我按以下方式配置:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<!-- we have to export for the classes to be visible -->
<Export-Package>
com.company.project.*;version=${project.version}
</Export-Package>
<Import-Package>
org.apache.felix.scr;version="[1.6,2)",
org.apache.sling.api;version="[2.1,3)",
org.apache.sling.api.request;version="[2.1,3)",
org.apache.sling.commons.scheduler;version="[2.1,3)",
*
</Import-Package>
<Private-Package>
org.apache.sling.models.*
</Private-Package>
<Include-Resource>
{maven-resources}
</Include-Resource>
<Sling-Model-Packages>
com.company.project.models.componentgroup
</Sling-Model-Packages>
</instructions>
</configuration>
</plugin>
模型作为接口(interface)实现:
package com.company.project.models.componentgroup;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.Default;
import org.apache.sling.models.annotations.Model;
import javax.inject.Inject;
@Model(adaptables = Resource.class)
public interface MyModel {
@Inject
@Default(values = "My Property Value")
String getMyProperty();
}
我有一个 Controller 类,其中 SlingResource 适应模型,但返回 null:
MyModel model = resource.adaptTo(MyModel.class);
我真的很感谢您的帮助。
最佳答案
我设法通过使用 OSGI Felix 控制台中的安装功能手动安装包 org.apache.sling.models.api 和 org.apache.sling.models.impl 并删除它来使其工作
<Private-Package>
org.apache.sling.models.*
</Private-Package>
它可以与接口(interface)和类一起使用,就像预期的那样:)
所以我的错误出在 maven-bundle-plugin 配置中,因为这些包在 Private-Package 中不可见。
您建议在 maven-bundle-plugin 配置中的何处添加 sling.models?
关于maven - 吊带模型 OSGI 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140361/