Je récupère des données de mon db le place dans une classe personnalisée DataClass
puis je formate mydata dans une ArrayList de nœuds et jusqu'à ce que tout se passe bien ici. Ensuite, je voudrais faire une boucle sur mes données et ajouter les enfants à chaque nœud. Mais je fais une erreur NullPointerException
...Impossible d'ajouter des enfants au nœud d'arbre
semble donc Ma classe comme:
@Entity
public class DataClass {
@Id
private Integer id;
private String structureDescription;
private String structId;
private String structureTag;
private Integer elementId;
private String elementDescription;
private Integer elementsSuite;
private String elementTag;
private Integer parent;
private Integer elementTypeId;
J'ai une classe Node:
public class Node {
private String id = "-1";
private List<Node> children = null;
private String parent = "#";
private String text = "";
public Node(){}
public Node(String id, String parent, String text) {
this.id = id;
this.parent = parent;
this.text = text;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<Node> getChildren() {
return children;
}
public void setChildren(List<Node> children) {
this.children = children;
}
public void addChild(Node child)
{
children.add(child);
}
public String getParent() {
return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public boolean equals(Node node)
{
return node.getText().equals(getText());
}
}
J'ai donc une méthode qui forme un Liste des objets DataClass dans unArrayList de noeuds:
public ArrayList<Node> formatData(List<DataClass> dbData)
{
ArrayList<Node> result = new ArrayList<>();
for(DataClass dbDataElement : dbData)
{
Node node = new Node();
node.setId(String.valueOf(dbDataElement.getId()) == null ? "" : String.valueOf(dbDataElement.getId()));
node.setParent(String.valueOf(dbDataElement.getParent()));
node.setText((dbDataElement.getElementTag() == null) ? dbDataElement.getStructId() : dbDataElement.getElementTag());
result.add(node);
}
return result;
}
Et puis j'ai une méthode qui est suppo sed pour trouver tous les enfants pour chaque noeud:
public ArrayList<Node> addNodeChildren(ArrayList<Node> formattedNodes)
{
ArrayList<Node> result = new ArrayList<>();
for(Node parent: formattedNodes)
{
for(Node possibleChild: formattedNodes)
{
if(String.valueOf(parent.getId()).equals(possibleChild.getParent()))
{
parent.addChild(possibleChild);
}
}
}
return result;
}
Mais quand je l'appelle return mainService.addNodeChildren(mainService.formatData(dbData));
du contrôleur i ai cette erreur:
09-Mai-2017 11: 06: 18,498 GRAVES [ http-nio-8080-exec-211] null.null Une exception n'a pas été mappée en raison d'une défaillance du mappeur d'exceptions. La réponse HTTP 500 sera réactivée.
java.lang.NullPointerExceptionat be.groups.observatory.domainmodel.Node.addChild(Node.java:38) at be.groups.observatory.be.groups.observatory.services.MainService.addNodeChildren(MainService.java:37) at be.groups.ui.resource.StructureResource.getAllChildren(StructureResource.java:130)
Avez-vous débogué votre code? Avec un IDE? – mtyurt
Copie possible de [Qu'est-ce qu'une exception NullPointerException et comment la réparer?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – f1sh
@mtyurt Je travaille sur Intellij qui ne montre aucune erreur ... –