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

SSM项目SpringMVC返回自定义对象报转换器缺失错误求助

解决SSM中@RestController返回自定义对象时的HttpMessageNotWritableException错误

可能的原因及解决方案:

  1. 修正实体类包名拼写
    你的Student类包名为cn.pickle.entiry,其中entiry是拼写错误,正确应为entity。包名错误会导致Spring无法正确识别该类,进而无法生成对应的消息转换器。修改包名为cn.pickle.entity即可。

  2. 确认Jackson依赖完整性与版本兼容性
    虽然你引入了jackson-databind,但需确保同时引入jackson-core和jackson-annotations,且版本与Spring版本匹配:

    <!-- Jackson核心依赖 -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.13.4</version> <!-- Spring 5.3.x适配此版本,Spring 4.x建议用2.8.x系列 -->
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.13.4</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.4</version>
    </dependency>
    
  3. 确保SpringMVC配置正确加载
    检查web.xml中DispatcherServlet的配置,确认它加载的是包含<mvc:annotation-driven/>的springmvc-config.xml:

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    同时确认springmvc-config.xml中的<mvc:annotation-driven/>标签未被注释。

  4. 为实体类添加无参构造(可选)
    虽然JVM会为无显式构造的类生成默认无参构造,但可通过Lombok注解显式声明避免潜在问题:

    @Getter
    @Setter
    @NoArgsConstructor
    public class Student {
        private int age;
        private String name;
    }
    

    确保已引入Lombok依赖:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>
    

验证

修改完成后重启服务器,访问/demo/demo2接口,若返回如下JSON则问题解决:

{"age":11,"name":"pickle"}

内容的提问来源于stack exchange,提问作者pickle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:10:44