2012-04-05 10 views
2

In meiner Action-Klasse habe ich ein Map<Long, Set<String>> Attribut namens accountsMap. Sagen wir, die Schlüsselwerte, die ich bekomme, sind 100,101,102. Ich habe meine Checkbox in der JSP codiert, so dass die POST-Parameter wie folgt aussehen:Struts 2 - Typkonvertierungsprobleme mit Map und Generics

accountsMap[100]=string1 
accountsMap[100]=string2 
accountsMap[101]=string3 
accountsMap[101]=string4 
accountsMap[102]=string5 

So die resultierende Karte 3 Einträge mit Schlüsseln 100.101.102 enthalten sollte. Der Map-Eintrag mit Schlüssel 100 sollte ein Set mit 2 Strings (string1 und string2) als Wert haben. Hoffe, du hast die Idee.

Ich bekomme eine bevölkerte Karte in meiner Aktion von Struts beim Einreichen der Seite. Aber die generische Information der Map scheint verworfen worden zu sein. Erstens sind die Schlüssel der Map vom Typ Integer und nicht Long, wie die ursprüngliche Map erwartet. Dann sind die Map-Werte vom Typ String[]; und nicht Set<String>. Struts ist in der Lage, diese Werte mit meinem Setter zu setzen, aber wenn ich irgendetwas mit dem Map-Annahme-Schlüsseltyp als Long- und Werttyp als Set mache, erhalte ich Class-Cast-Exceptions.

Wie bekomme ich Struts, um den richtigen Werttyp in der Map festzulegen? Bitte helfen Sie.

+0

Hallo neues struts2 Mitglied ... Damit die Dinge reibungslos funktionieren Wenn du deinen Kommentar als Lösung posten könntest und später akzeptierst, wäre das großartig, oder du kannst die Frage löschen, weil es keine gibt zeigen Sie auf jemanden, der darauf antwortet. – Quaternion

+0

@Quaternion, ich konnte nicht herausfinden, wie man die Frage löscht, also habe ich meinen früheren Kommentar als Antwort gepostet. Übrigens, selbst das (auf meine eigene Frage antwortend) war zu dem Zeitpunkt, als ich den Kommentar abgab, nicht erlaubt. – Vasan

Antwort

1

Gelöst!

Ich habe keine Getter für das Attribut zur Verfügung gestellt, weil es nur von der Seite schreibgeschützt war - ich würde keinen Wert dafür haben, wenn die Seite geladen wird. Ich habe einen Getter hinzugefügt (als eine verzweifelte Maßnahme) und es hat das Problem gelöst! Shodathunk ?! :-)