在我的java代码中,我有以下课程:

@Model(adaptables = SlingHttpServletRequest.class)
public class ListModel extends SomeList{

    @Inject
    protected ResourceResolver resourceResolver;

    //this method works fine:
    public List<String> getAllData(){
        System.out.println(resourceResolver.getUserID());
    }
}


当我从此类调用方法getAllData()时,我看到了用户的ID-很好。

现在,我需要编写一个第二类,它将扩展上面的一个。看起来像这样:

public class MyNextListModel extends ListModel{

    //this method throws nullpointer because resourceResolver is null - why?
     @Override
     public List<ListItemModel> getAllItems() {
         System.out.println(resourceResolver.getUserID());
     }
}


为什么第二类中的resourceResolver具有空值?

我也尝试移动此代码:

@Inject
protected ResourceResolver resourceResolver;


ListModelMyNextListModel,但是即使在第二类中它仍然为null

最佳答案

如果从您的模型继承的类缺少@model批注,则sling不知道该怎么做。只需将注释添加到继承的类,您的代码就可以工作。顺便说一句,请确保另一个类也位于您的核心Pom中注册为吊索模型的软件包中。

08-17 18:10