2016-07-12 22 views
0

Mein Controller kann keine Google Guava Multimap aus dem Frontend zuordnen. Ich sende von meinem Javascript um dieses Objekt:Spring MVC Mapping Guava Multimap

{1:[true,false], 2:[false,true], ...}. 

Wenn ich ein Standard-

java.util.Map<Long, List<Boolean>> 

funktioniert alles einwandfrei verwenden. Aber nicht mit der Guava Multimap. Muss ich Spring konfigurieren, um einen benutzerdefinierten Konverter zu verwenden, oder was ist das Problem?

Der Controller ist:

@RequestMapping(path = "/myurl", method = RequestMethod.POST, produces = CotrollerKonstanten.JSON_UTF8) 
public long myMethod(@RequestBody MappingDto mappingDto) { 
    //... 
} 

Meine Ausnahme ist:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: 
    Can not construct instance of com.google.common.collect.Multimap, problem: 
    abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information 
at [Source: [email protected]; line: 1, column: 13] (through reference chain: ...myClass); 
nested exception is com.fasterxml.jackson.databind.JsonMappingException: 
    Can not construct instance of com.google.common.collect.Multimap, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information 
+0

Bitte genauer: zeigen Sie uns Ihren Code (Controller, Konverter) und eine Ausnahme, die Sie erhalten. – Xaerxess

Antwort

2

Hast du register the Guava module? Standardmäßig unterstützt Jackson (und damit Spring) das Serialisieren oder Deserialisieren von Guava-Datentypen nicht.

Das Guava-Modul kann oder kann nicht für Sie arbeiten, abhängig davon, welche Implementierung von Multimap Sie möchten - nicht alle Datentypen sind implementiert.

+0

Ahh, das ist der Grund, denke ich. Ich habe das Modul nicht in meinem Pom. Ich dachte, es würde aus der Box funktionieren :-) Danke. –