我正在编写一个使用StompJS的Spring WebSocket应用程序。
在客户端,我打算发送对象列表,在服务器端将其映射为Java对象时,它会转换为LinkedHashMap。
我的客户端代码如下:
function stomball() {
stompClient.send("/brkr/call", {}, JSON.stringify(listIds));
}
Listids看起来像这样
[{
"path": "/a/b/c.txt",
"id": 12
}, {
"path": "/a/b/c/d.txt",
"id": 13
}]
List Id对象的样式如下:
public class ListId {
private String path;
private Long id;
//getters and setters...
}
控制器的外观如下所示。
@MessageMapping("/call" )
@SendTo("/topic/showResult")
public RetObj process(List<ListId> listIds) {
if (!listIds.isEmpty()) {
for(ListId listId: listIds) {
}
}
所以我得到了一个java.lang.ClassCastException:java.util.LinkedHashMap无法转换为com.blah.ListId
然而,当我使用普通的Spring Controller和RestMapping进行相同的操作时,它可以正常工作。是否有什么与Spring的MessageMapping注释相关的问题,它将对象映射到与传统方式不同的java中?我不确定为什么无法转换为ListID。