最近跟着做淘淘商城项目的时候,出了这么一个406错误,
这个是Controller中的代码
@RequestMapping("/items/{itemId}") @ResponseBody public TbItem getItemById(@PathVariable long itemId) { TbItem item=itemService.findItemById(itemId); return item; }
这个是tatao-manager-web中json转换包依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.7.3</version> </dependency>
这个是po类TbItem
public class TbItem { private Long id; private String title; private String sellPoint; private Long price; private Integer num; private String barcode; private String image; private Long cid; private Byte status; private Date created; private Date updated; //省略getter、setter方法
注意看一下,这个类现在有一个Date类型的属性created,怀疑问题出在这,
1、改依赖
<!-- jackson相关依赖包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.4</version> </dependency>
一个包变成了三个包。
2、改springMVC配置文件
<!-- MappingJackson2HttpMessageConverter处理responseBody 里面日期类型 xsi:schemaLocation引入版本必须大于等于3.1 --> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyyMMddHHmmss" /> </bean> </property> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
我的配置文件名叫springmvc.xml,这一段是全局设置json响应的日期格式,还有另外一种方式,可以去看下面的参考。
OK,再跑一下,出来了,
虽然问题解决了,但到底是什么原因导致的,我现在确定不了,以后进一步学习补上。