Hi,
ich hätte gedacht ich krieg das hin aber irgendwie kann ich das Problem nicht lösen.
Ich habe eine ArrayList, der bis zu 3 Elemente (string) hinzugefügt werden können. Diese Elemente dürfen nicht identisch sein. Sofern letzteres gegeben ist, funktioniert die Methode wunderbar. Sobald aber dann tatsächlich das selbe Element hinzugefügt wird, kommt zwar die entsprechende Fehlermeldung, aber danach lassen sich garkeine Elemente mehr hinzufügen.
Ich habe eine Vermutung: sobald ein identisches Element hinzugefügt wird, setze ich erhalten ja auf "true", sodass beim erneuten Methodenaufruf die 3 If-Else garnicht erreicht werden. Wenn dies nicht geschieht, ist enthalten ja per default auf "false", sodass er diese normal ausführt.
Lieg ich damit richtig? Wie umgehe ich das Problem?
(ja ich weiss elegant ist das nicht aber das ist ja auch das Anfängerforum ^^)
ach ja, getMethode:
ich hätte gedacht ich krieg das hin aber irgendwie kann ich das Problem nicht lösen.
Ich habe eine ArrayList, der bis zu 3 Elemente (string) hinzugefügt werden können. Diese Elemente dürfen nicht identisch sein. Sofern letzteres gegeben ist, funktioniert die Methode wunderbar. Sobald aber dann tatsächlich das selbe Element hinzugefügt wird, kommt zwar die entsprechende Fehlermeldung, aber danach lassen sich garkeine Elemente mehr hinzufügen.
Code:
private int progress;
private String titel;
private boolean enthalten = false;
private ArrayList<String> liste = new ArrayList<String>(2);
public String add() {
titel = Bean.getTitle();
int size = liste.size();
FacesContext context = FacesContext.getCurrentInstance();
if (size >= 0) {
for (int i=0; i<liste.size(); i++) {
if (titel == liste.get(i)) {
enthalten = true;
context.addMessage("warnMsg", new FacesMessage("Fehler", "ist bereits enthalten!"));
}
}
}
if (enthalten == false) {
if (size == 0) {
progress = 34;
liste.add(0, titel);
context.addMessage("successMsg", new FacesMessage("Erfolgreich", "wurde der Liste hinzugefügt"));
return titel;
} else if (size == 1) {
progress = 67;
liste.add(1, titel);
context.addMessage("successMsg", new FacesMessage("Erfolgreich", "wurde der Liste hinzugefügt"));
return titel;
} else if (size == 2) {
progress = 100;
liste.add(2, titel);
context.addMessage("successMsg", new FacesMessage(""Erfolgreich", "wurde der Liste hinzugefügt"));
return titel;
}
}
return titel;
}
Ich habe eine Vermutung: sobald ein identisches Element hinzugefügt wird, setze ich erhalten ja auf "true", sodass beim erneuten Methodenaufruf die 3 If-Else garnicht erreicht werden. Wenn dies nicht geschieht, ist enthalten ja per default auf "false", sodass er diese normal ausführt.
Lieg ich damit richtig? Wie umgehe ich das Problem?
(ja ich weiss elegant ist das nicht aber das ist ja auch das Anfängerforum ^^)
ach ja, getMethode:
Code:
public boolean isEnthalten() {
return true;
}
Zuletzt bearbeitet: