报错信息如下:
2024-02-02 16:58:29.832 ERROR 15768 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class com.pxl.bg_system.common.Result] with preset Content-Type 'text/plain'] with root cause
问题原因:
Spring MVC 框架无法找到合适的消息转换器来处理 返回Result类型的数据。这可能是因为没有正确配置消息转换器或者没有提供适当的转换器来处理该类型的数据。
在默认情况下,Spring MVC 使用
MappingJackson2HttpMessageConverter
来处理将 Java 对象转换为 JSON 格式的操作。但是,如果你的代码中进行了自定义的配置,并且没有包含适当的转换器,就会导致这个错误。通过配置
MappingJackson2HttpMessageConverter
并将其添加到消息转换器列表中,你为 Spring MVC 提供了一个可用于序列化Result
对象的转换器,从而解决了这个问题。
所以只需要配置一个 MappingJackson2HttpMessageConverter
转换器来处理 Result
类型的数据。这个转换器可以将 Java 对象序列化为 JSON 格式,并将其包含在响应体中。
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.util.List;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
ObjectMapper objectMapper = new ObjectMapper();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
converter.setSupportedMediaTypes(List.of(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN));
converters.add(converter);
}
}
温馨提示:
一个项目中只会生效一个 继承了 WebMvcConfigurer接口或WebMvcConfiguration类的配置类。