2 Stimmen

List.addAll repliziert Sitzungsvariablen

Ich habe den folgenden Code in meiner Aktionsklasse:

MemberData mbr = MyUtil.getMember(request.getSession());
:::::::::::::::::::::::
{
 List sysList = mbr .getSystemList();   //returns 'systemList'
 sysList.addAll(mbr .getUserEnteredList());  //add user entered to the system entered objects list
 addWorksheetFor(wb, sysList);  //add the list to an excel workbook
}

Ich habe die MemberData in der Sitzung und sie enthält eine Liste namens systemList. Wenn ich die List sysList = mbr.getSystemList() und dann die vom Benutzer eingegebene Liste hinzufügen, wird die "systemList" im Sitzungsobjekt geändert. Ich füge die beiden Listen in eine lokale Variable "sysList" ein, aber die Sitzungsvariable "systemList" wird ebenfalls geändert. Sie wird mit der Variablen "sysList" identisch.

Allerdings, wenn ich durch die systemList und userEnteredList separat durchlaufen und fügen Sie eine dritte Liste wie die folgenden:

MemberData mbr = MyUtil.getMember(request.getSession());
:::::::::::::::::::::::
{
 List sysList = mbr .getSystemList();   //returns 'systemList'
 List userList = mbr .getUserEnteredList();  //returns 'userEnteredList'
 List allList = new ArrayList();
 for (Iterator it=sysList.iterator(); it.hasNext();)
 allList.add(it.next());
 for (Iterator it=userList.iterator(); it.hasNext();
 allList.add(it.next());
 addWorksheetFor(wb, sysList);  //add the list to an excel workbook
}

Dann funktioniert es. Die Sitzungsvariable wird in diesem Fall nicht geändert. Irgendwelche Ideen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X