一般出現406錯誤有兩種可能:
1、如果字尾是html是不能響應json資料的。需要修改字尾名。
在做僞靜态化過程中,以.html結尾的字尾,做post請求時,不能響應json格式,這是spring官方做出的處理
可以加一個字尾改為.action
2、檢視Jackson包是否存在。
spring MVC預設依賴Jackson包
第一種問題的解決方案:
第二種問題的解決方案:
在springMVC配置檔案中添加以下代碼:
<!--避免ajax請求出現406錯誤-->
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="false"/>
<property name="favorParameter" value="false"/>
<property name="ignoreAcceptHeader" value="false"/>
<property name="mediaTypes">
<value>
atom = application/atom+xml
html = text/html
json = application/json
* = */*
</value>
</property>
</bean>
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" >
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list><value>text/html;charset=UTF-8</value></list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
在pom.xml 添加如下依賴:
<!--JSON:jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.1</version>
</dependency>