Sto scrivendo un'applicazione di websocket a molla con StompJS sul lato client.Websocket di primavera @messagemapping problema di serializzazione java.lang.ClassCastException: java.util.LinkedHashMap non può essere lanciato
Sul lato client che sto l'intenzione di inviare un elenco di oggetti e sul lato server quando è mappatura in oggetto Java, si trasforma in un LinkedHashMap
Il mio codice lato client è
function stomball() {
stompClient.send("/brkr/call", {}, JSON.stringify(listIds));
}
Listids sembra
[{
"path": "https://stackoverflow.com/a/b/c.txt",
"id": 12
}, {
"path": "https://stackoverflow.com/a/b/c/d.txt",
"id": 13
}]
Lista Id oggetto assomiglia
public class ListId {
private String path;
private Long id;
//getters and setters...
}
Il controller si presenta così
@MessageMapping("/call")
@SendTo("/topic/showResult")
public RetObj process(List<ListId> listIds) {
if (!listIds.isEmpty()) {
for(ListId listId: listIds) {
}
}
così ottengo un java.lang.ClassCastException: java.util.LinkedHashMap non può essere lanciato a com.blah.ListId
Tuttavia quando faccio il lo stesso con il normale controller Spring con RestMapping funziona, c'è qualcosa con l'annotazione di MessageMapping che mappa gli oggetti su java in modo diverso rispetto al modo tradizionale Non sono sicuro del perché non sto trasmettendo a ListID
Puoi mostrarci dove è configurato il tuo objectmapper? – Andreas
Il tuo ListId è serializzabile? – Andreas
L'objectmapper è configurato come Il ListId non è serializzabile, ho aggiunto la serializzazione e sto girando nello stesso problema .. –
user1707141