为什么在其他 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;
从ListModel
到MyNextListModel
,但即使如此,它在第二个class
中仍然是空的
如果从您的模型继承的 class 缺少 @model 注释,sling 不知道该怎么做。只需将注释添加到继承 class 中,您的代码就可以正常工作。顺便说一句,确保另一个 class 也在一个包中,该包在您的核心 Pom 中注册为吊索模型包。
在我的 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;
从ListModel
到MyNextListModel
,但即使如此,它在第二个class
如果从您的模型继承的 class 缺少 @model 注释,sling 不知道该怎么做。只需将注释添加到继承 class 中,您的代码就可以正常工作。顺便说一句,确保另一个 class 也在一个包中,该包在您的核心 Pom 中注册为吊索模型包。