Dans mon java
code que j'ai la classe suivante:Pourquoi le domaine de la classe mère a une valeur nulle lors de l'utilisation dans d'autres classes (Java/fronde apache)
@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());
}
}
Quand j'appelle méthode getAllData()
de cette classe , Je vois l'identifiant de mon utilisateur - ce qui est bien.
Maintenant j'ai besoin d'écrire une 2ème classe qui va prolonger celle ci-dessus. Il ressemble à ceci:
public class MyNextListModel extends ListModel{
//this method throws nullpointer because resourceResolver is null - why?
@Override
public List<ListItemModel> getAllItems() {
System.out.println(resourceResolver.getUserID());
}
}
Comment se fait la resourceResolver dans la 2e classe a une valeur nulle?
J'ai aussi essayé de déplacer ce code:
@Inject
protected ResourceResolver resourceResolver;
ListModel
-MyNextListModel
, mais même si, il est toujours nulle dans la 2e classe
Avez-vous essayé super.resourceResolver.getUserID()? –
Kyle, j'ai essayé et ça n'a pas marché, malheureusement ... – randomuser1
Je n'ai aucun moyen de vérifier cela maintenant mais je crois que Sling a besoin que la sous-classe elle-même soit annotée avec l'annotation '@ Model'. Ce n'est pas à la recherche de super-classes. Essayez d'ajouter '@Model (adaptables = SlingHttpServletRequest.class)' à MyNextListModel '. – toniedzwiedz