SlingModel在调整项目时仍然返回null

时间:2014-07-24 00:22:09

标签: cq5 sling aem

我想让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 并且找不到任何适配器。

任何提示都将不胜感激。

2 个答案:

答案 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;
    }

}