簡體   English   中英

Spring MVC - 不支持內容類型“應用程序/json”

[英]Spring MVC - Content type 'application/json' not supported

我正在 Eclipse Enterprise 中通過 Spring 框架而不是 Spring Boot 編寫 MVC 項目。 使用 Postman,我正在向我的方法發送一個 json 對象:

@PutMapping(value = "/put_in_mail", 
        produces = MediaType.APPLICATION_JSON_VALUE,
        consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Mailbox> putInMailBox(@RequestBody Mail mail) {
    return service.putMailInInbox(mail);
}

但是在 Eclipse 中我收到了這個錯誤:

Jul 11, 2022 5:08:10 PM org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver logException
WARNING: Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json' not supported]

我認為這與我的 pom.xml 和我的依賴項有關:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>laustrup</groupId>
  <artifactId>Mailbox</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>Mailbox Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
         <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.13.3</version>
    </dependency>
    
  </dependencies>
  
  <build>
    <finalName>Mailbox</finalName>
    <!-- To define the plugin version in your parent POM -->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.3.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

pom.xml 中有什么我應該改變的嗎?

其他細節是這樣的 - web.xml:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  
  <servlet>
    <servlet-name>frontcontroller</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>frontcontroller</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:ctx="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/context/spring-mvc.xsd"
    >

    <ctx:annotation-config></ctx:annotation-config>
    
    <ctx:component-scan base-package="laustrup.controllers"></ctx:component-scan>
    <ctx:component-scan base-package="laustrup.models"></ctx:component-scan>
    <ctx:component-scan base-package="laustrup.services"></ctx:component-scan>
</beans>

正如 Sotirios Delimanolis 所提到的,我在我的 -servlet.xml 文件中錯過了一個 mvc:annotation 標記,並且寫了一些關於 schemaLocation 的錯誤,現在 mvc 支持 json。

確保模型文件包含您嘗試以 JSON 格式發送的數據的所有必需的 getter 和 setter。 如果模型文件中的所有內容都很好,請查看詳細解決方案的鏈接Content type 'application/JSON not supported in Spring MVC and jackson

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM