【发布时间】:2014-09-28 04:57:29
【问题描述】:
我想在我们基于 sling 的项目中设置 Sling 模型(实际上它是一个 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>
模型被实现为接口:
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);
我非常感谢您的帮助。
【问题讨论】: