当前位置: 首页 > 知识库问答 >
问题:

STOMP react.js中的对象-Spring Boot

戴品
2023-03-14

我正在尝试使用stomp将一些数据从react.js发送到Spring Boot。

我在服务器端有这样的设置:

@MessageMapping("/send")
    @SendTo("/topic/public")
    public String send(@Payload Notification data) {
        try {
            logger.debug("****send****");
            logger.debug(data.getData());
            logger.debug("****send****");
            Thread.sleep(1000 * 10);
            return "sending back" + data.getData();
        } catch (Exception e) {
            logger.debug("---" + e.getMessage() + "---");
            return "";
        }
    }
        const Stomp = require('stompjs');
        var SockJS = require('sockjs-client');
        SockJS = new SockJS('http://localhost:8080//ws');
        this.state.stompClient = Stomp.over(SockJS);
        this.state.stompClient.send("/app/send", {}, {"data": this.state.data});

完整消息:

org.springframework.messaging.converter.MessageConversionException: Could not read JSON: Cannot deserialize instance of `com.mua.telapoka.pojo.Notification` out of START_ARRAY token
 at [Source: (byte[])"[object Object]"; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.mua.telapoka.pojo.Notification` out of START_ARRAY token
 at [Source: (byte[])"[object Object]"; line: 1, column: 1]
    at org.springframework.messaging.converter.MappingJackson2MessageConverter.convertFromInternal(MappingJackson2MessageConverter.java:235) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.converter.AbstractMessageConverter.fromMessage(AbstractMessageConverter.java:197) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.converter.CompositeMessageConverter.fromMessage(CompositeMessageConverter.java:70) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.handler.annotation.support.PayloadMethodArgumentResolver.resolveArgument(PayloadMethodArgumentResolver.java:138) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:117) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:148) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:116) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMatch(AbstractMethodMessageHandler.java:565) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:511) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:94) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessageInternal(AbstractMethodMessageHandler.java:520) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessage(AbstractMethodMessageHandler.java:454) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:144) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.mua.telapoka.pojo.Notification` out of START_ARRAY token
 at [Source: (byte[])"[object Object]"; line: 1, column: 1]
    at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1464) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1238) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1190) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeFromArray(BeanDeserializer.java:604) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:190) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:166) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4482) ~[jackson-databind-2.11.0.jar:2.11.0]
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3529) ~[jackson-databind-2.11.0.jar:2.11.0]
    at org.springframework.messaging.converter.MappingJackson2MessageConverter.convertFromInternal(MappingJackson2MessageConverter.java:219) ~[spring-messaging-5.2.7.RELEASE.jar:5.2.7.RELEASE]
    ... 15 common frames omitted

共有1个答案

萧凡
2023-03-14

因为Stompsend(destination,headers,body)需要string类型的body。因此,您需要通过执行json.stringify({data:this.state.data})来转换为String。当然,您的服务器应该包含一个与之匹配的模型

 类似资料:
  • 问题内容: 我正在自学Java,这本书中的其中一项复习练习要求“对象”和“对象变量”之间的区别。 我知道什么是对象(类的特定实例),但是我似乎无法在书中的任何地方(无答案部分)或在互联网上找到术语“对象变量”。 有人知道这个名词的意思吗? 问题答案: 它是“实例变量”的同义词: 显然,该术语并不常用,最好坚持使用“实例变量”以避免任何潜在的歧义。

  • 本文向大家介绍JavaScript中的Array 对象(数组对象),包括了JavaScript中的Array 对象(数组对象)的使用技巧和注意事项,需要的朋友参考一下  1、创建Array对象方法: --->var arr = [1,2,3];//简单的定义方法 此时可以知道 此时可以知道: 2、Array对象属性 Array常见的属性有三个:constructor、length和prototyp

  • 问题内容: 维护一个经常使用的对象的池并从池中获取一个而不创建一个新对象的优点和缺点是什么。类似于字符串实习,只是所有类对象都可以使用。 例如,由于节省了gc时间和对象创建时间,因此可以认为它很好。另一方面,如果从多个线程中使用它,则可能是一个同步瓶颈,需要进行显式释放,并可能导致内存泄漏。通过占用可以回收的内存,它对垃圾收集器施加了额外的压力。 问题答案: 除非创建对象昂贵,否则我不会打扰。 好

  • 这里,类的构造函数接受JButton并向其添加鼠标侦听器,从而触发JPopupMenu,该JPopupMenu只有一个组件,即保存整个数据的JList。此外,将带有数据项的ArrayList链接到ListModel。 设置数据项。 这就是混乱产生的地方。我从鼠标事件位置/点正确地获取了数据项(WifiItem),但是当我单击WifiItem的JButton时,它不会触发该方法,就像它似乎没有检测到

  • 我正在尝试更新elasticsearch中的一个对象,但出现了下一条错误消息: Elasticsearch异常[type=mapper\u parsing\u exception,[errorMessages]的reason=object mapping试图将字段[errorMessages]解析为object,但找到了一个具体值] 我想更新的信息是: 我使用的其余客户端连接器和对象UpdateR

  • 问题内容: 这是我要在这里实现的目标: 从数据库获取文件名和ID的列表 在网络路径上搜索这些文件 存储未找到的文件的任何ID 在第二个数据库中搜索该ID 在网络路径上搜索这些文件 列出所有在两个位置均未找到文件的ID。 我遇到的问题是尝试使用我收集的结果中的文件名。 运行代码时,会显示从数据库收集的原始JSON数据,但是当尝试仅列出文件名时,我什么也没得到(甚至没有错误) 关于如何解决此问题并以一

  • 问题内容: 在一个我目前正在从事的项目中,我遇到了一个角度异常: 在寻找解决方案的搜索中,我直接在浏览器中输入了Web服务的URL,但令人惊讶的是,我没有收到预期的数组。 Web服务类: 当我输入网址时,我希望看到带有JSON对象的JSON数组: 但是,相反,我收到的JSON对象的属性与我期望的JSON对象相同,没有任何数组: 所以我想知道为什么没有数组,当我添加另一个Clazz对象时会发生什么。

  • 当抽出对象时,Photoshop 将对象的背景抹除为透明。对象边缘的像素将丢失源于背景的颜色图素,这样像素就可以和新背景混合而不会产生色晕。 使用更有效、更灵活的调整边缘命令 如需获得最佳效果和进行非破坏性处理,请使用“选择”>“调整边缘”命令。 请参阅调整选区边缘,获取说明以及其他帮助教程的链接。 “调整边缘”命令对于高度复杂的边缘内容(例如细微的头发)特别有效。与早期“抽出”增效工具的不同之处