私のデータベースからデータを取得します。カスタムクラスDataClass
に入れてから、mydataをノードのArrayListにフォーマットし、ここまではすべて問題ありません。次に、私は自分のデータをループして各ノードに子を追加したいと思います。子ノードをツリーノードに追加できません
@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;
それから私は、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());
}
}
だから私は法形式aを持っているしかし、私はので、私のクラスがどのように見える...
をNullPointerException
エラーを抱えていますノードの配列anArrayへのDataClassオブジェクトのリスト:
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;
}
そして、私はsuppo各ノードのすべての子を見つけるためにsedを:
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;
}
をしかし、私は、コントローラからreturn mainService.addNodeChildren(mainService.formatData(dbData));
を呼び出すとき、私はこのエラーを抱えている:
09-月 - 2017年11:06:18.498 [SEVERE http-nio-8080-exec-211] null.null例外マッパーの失敗のために 例外がマップされませんでした。 HTTP 500 という応答が再度表示されます。
の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)
コードをデバッグしましたか? IDEで? – mtyurt
[NullPointerExceptionとは何か、それを修正する方法は?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) ) – f1sh
@mtyurt私はIntellijでエラーを表示していません... –