为什么在其他 class (Java/apache sling) 中使用时来自父 class 的字段具有空值

Why does the field from parent class has a null value when using in other class (Java/apache sling)

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

@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());
    }
}

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

现在我需要编写第二个 class 来扩展上面的内容。看起来像这样:

public class MyNextListModel extends ListModel{

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

为什么第二个class中的resourceResolver有一个空值?

我也试过移动这段代码:

@Inject
protected ResourceResolver resourceResolver;

ListModelMyNextListModel,但即使如此,它在第二个class

中仍然是空的

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