SSM项目SpringMVC返回自定义对象报转换器缺失错误求助
解决SSM中@RestController返回自定义对象时的HttpMessageNotWritableException错误
可能的原因及解决方案:
修正实体类包名拼写
你的Student类包名为cn.pickle.entiry,其中entiry是拼写错误,正确应为entity。包名错误会导致Spring无法正确识别该类,进而无法生成对应的消息转换器。修改包名为cn.pickle.entity即可。确认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>确保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/>标签未被注释。为实体类添加无参构造(可选)
虽然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
相关产品推荐
相关产品推荐

