JSF: Komponente aus dem Komponenten-Tree entfernen

incsoft

Grünschnabel
Hallo,

wie kann man eine Komponente aus dem Kompontenbaum entfernen? Ich habe es so versucht:

Code:
if(currentPanel != null)
  mainPanel.getChildren().remove(currentPanel);

currentPanel = createNewHtmlPanel(...); //hier wird ein neues Panel erzeugt

if(currentPanel != null)
  mainPanel.getChildren().add(currentPanel);

Es passiert nun folgendes: Das aktuelle Panel wird nicht herausgelöscht, stattdessen wird das neue Panel einfach hinzugefügt, d.h. es kommen immer mehr Panels hinzu. Also funktioniert parent.remove(child) nicht oder muss ich zusätzlich noch etwas aufrufen? Danke.
 
hi incsoft,

ohne den Hintergrund genau zu kennen. Der Code scheint das zu machen was du beschreibst. Der Fehler liegt damit vermutlich nicht im remove()

hier scheint currentPanel == null zu sein
if (currentPanel != null) {
mainPanel.getChildren().remove(currentPanel);
}

und hier trägst du immer ein neues ein
currentPanel = createNewHtmlPanel(...); //hier wird ein neues Panel erzeugt
if (currentPanel != null) {
mainPanel.getChildren().add(currentPanel);
}

Das remove(currentPanel) nicht funktionieren soll, ist eher unwahrscheinlich. Ich denke du hast ein Fehler irgendwo in deiner Logik.
 
Hallo,

habs nun mal mit Ausgaben überprüft, currentPanel ist nie null er springt immer dort hinein. Vor dem remove ist es 1 Child-Komponente, danach 0. Beim nächsten Request dagegen sind es dann plötzlich 2 Child-Komponenten vorher und 1 danach und so fort.
 
....nächsten Request dagegen sind es dann plötzlich 2 Child-Komponenten vorher und 1 danach und so fort.

dann scheinst du am Ende des ersten Requests das Object zu verlieren bzw. mit dem alten Wert zu überschreiben. Ich tippe eher darauf, dass die Änderung nicht auf dem richtigen Object gemacht wird. Du müsstest mal mehr Infos geben. z.B. den Quelltext
 

Neue Beiträge

Zurück