【发布时间】:2015-12-11 19:51:54
【问题描述】:
我正在客户端用 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 cannot be cast to com.blah.ListId
但是,当我使用带有 RestMapping 的普通 Spring Controller 执行相同操作时,它工作正常,Springs MessageMapping 注释是否有任何东西可以将对象映射到 java 与传统方式不同 我不确定为什么不投射到 ListID
【问题讨论】:
-
您能告诉我们您的 objectmapper 的配置位置吗?
-
您的 ListId 是否可序列化?
-
objectmapper 配置为
ListId 不可序列化,我添加了序列化并遇到同样的问题..
标签: java stomp spring-websocket stompjs