You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring实时聊天应用遭遇MessageConversionException异常,消息无法在前端页面展示

Spring实时聊天应用遭遇MessageConversionException异常,消息无法在前端页面展示

兄弟,我仔细看了你的代码和问题描述,这俩问题(消息不显示+MessageConversionException)其实是两个不同的点导致的,咱们一个个来解决:

一、前端消息不显示的直接原因

你写的showMessage函数里,创建了消息元素但没有把它添加到聊天容器里,而且设置样式的语法也错了(JS里元素的类名属性是className不是class)。修改后的showMessage应该是这样:

function showMessage(message){
    let chat=document.getElementById('chat');
    let messageElement=document.createElement('div');
    messageElement.textContent=message.sender+':'+ message.content;
    messageElement.className="border-bottom mb-1"; // 修正为className
    chat.appendChild(messageElement); // 新增这行,把消息元素加入聊天容器
    chat.scrollTop=chat.scrollHeight;
}

这样消息才能被渲染到页面上~

二、后端MessageConversionException的根本原因

这个异常是因为Spring无法把前端发送的JSON消息转换成你的ChatMessage实体类,问题出在ChatMessage类的定义上:
Spring的WebSocket消息转换器(默认是Jackson)要求实体类必须满足:

  • 拥有无参构造方法
  • 所有字段都有对应的getter和setter方法

你没贴ChatMessage的代码,我猜你大概率没写这些。给你一个标准的ChatMessage示例:

package com.chat.main.model;

public class ChatMessage {
    private String sender;
    private String content;

    // 必须要有无参构造,Jackson需要它实例化对象
    public ChatMessage() {}

    // 全参构造(可选,方便快速创建对象)
    public ChatMessage(String sender, String content) {
        this.sender = sender;
        this.content = content;
    }

    // 所有字段的getter/setter必须齐全,Jackson靠它赋值
    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

没有无参构造的话,Jackson没法实例化对象;没有getter/setter的话,没法给字段赋值,自然就会抛出转换异常。

最后再检查两个小细节

  1. 确保你的项目里引入了spring-boot-starter-websocket依赖,这是Spring WebSocket的核心依赖
  2. 你的WebSocket配置里的跨域设置setAllowedOrigins("http://localhost:8080")是对的,本地测试完全没问题

修改完这两处,应该就能正常收发消息啦!

备注:内容来源于stack exchange,提问作者Niraj Patle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:53:00