我想让Sling Models工作。
我有一个简单的注释POJO按惯例映射到JCR节点,如下所示:
@Model(adaptables=Resource.class)
public class FlushRule {
@Inject
public String optingRegex;
}
我在optingRegex中设置了一个String值。
当我尝试使用它时:
FlushRule currentRule = rule.adaptTo(FlushRule.class);
虽然正确的对象在规则中,但currentRule为null。
我看着http://localhost:4502/system/console/adapters
并且找不到任何适配器。
任何提示都将不胜感激。
答案 0 :(得分:1)
您需要在maven-bundle-plugin
中的pom.xml
配置中添加以下行:
<configuration>
<instructions>
<Sling-Model-Packages>
org.apache.sling.models.it.models
</Sling-Model-Packages>
</instructions>
</configuration>
其中org.apache.sling.models.it.models
是包含模型的Java包。将扫描配置的包(及其所有子包)@Model
。可以在Sling website上找到更多信息。
答案 1 :(得分:0)
Sling Model对象可能为null的另一个原因是Sling Model具有参数化构造函数而没有默认构造函数。
示例:
@Model(adaptables = Resource.class)
public class CompetitionRound {
@Inject
String round;
public CompetitionRound(String round) {
this.round = round;
}
}
添加一个默认的构造函数,它应该可以工作。
@Model(adaptables = Resource.class)
public class CompetitionRound {
@Inject
String round;
public CompetitionRound() {
}
public CompetitionRound(String round) {
this.round = round;
}
}