SpringMVC usa la anotación @ResponseBody para convertir json en varias situaciones donde aparece 406

Hoy, hubo un error 406 al devolver datos json con la prueba SpringMVC. Revisé muchos artículos en Internet y no lo resolví. Permítanme enumerar las situaciones más comunes:

1. El paquete Jackson no se importa correctamente.

Mi dependencia ya está agregada

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.10.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.10.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.10.0</version>
</dependency>

También hay bibliotecas correspondientes
Inserte la descripción de la imagen aquí

Dos, la versión SpringMVC y la versión Jackson no son compatibles

La versión de SpringMVC que utilizo es 4.1.2-RELEASE, y la versión de Jackson es la 2.10.0 anterior No hay ningún problema en este lugar.

Tres, no hay configuración para cargar el correspondiente HttpMessageConverter

Spring tiene como valor predeterminado seis HttpMessageConverters. Para lograr la conversión json, debe cargar HttpMessageConverter de Jackson. Si está configurado por separado, agréguelo en el archivo de configuración springmvc

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
            </list>
        </property>
</bean>
O agregue etiquetas basadas en anotaciones, generalmente este método
<mvc:annotation-driven/>

Cuarto, el patrón de URL de DispatcherServlet termina con .html

Mi configuración web.xml es

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

No existe tal problema con el final de .html. Si existe tal problema, puede cambiarlo. Si debe usar el final de .html, agregue otro patrón de URL

<servlet-mapping>
        <servlet-name>dispatch</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.json</url-pattern>
 </servlet-mapping>

Cinco, hay un problema con la clase utilizada para la conversión.

Esta es mi situación: cuando escribí una interfaz temporalmente para la interfaz de aprendizaje, simplemente definí una clase sin un método get, por lo que apareció la situación 406. Así que simplemente agregue el método get a las propiedades de la clase.

Supongo que te gusta

Origin blog.csdn.net/Baibair/article/details/104859190
Recomendado
Clasificación