@RequestBody 400以及日期注解前后端转换
前两天遇到一个问题,记录下
在用Ajax向后端传数据时,一直报空指针错误,打断点发现断点根本没有进去,这是因为@RequestBody是把Json格式的字符串自动填充到带有注解的类里,但是前端需要做一个操作把属性转换成Json格式,
//把需要传入的变量全部放进去
obj={investmentId:id};
//在Ajax中进行格式转换
data:JSON.stringify(obj)
另外一个400的错误大部分是因为请求和选择的不一致,比如前端的请求方式为POST后端指定为GET,或者后端接收变量没有加@RequestBody注解也会导致400
然后就是日期转换的问题
因为后端传入前端的日期通常是一个long,而前端传入后端的是字符串,这时除了自己写代码进行转换外还可以使用两个注解,
对于前端传入的字符串格式,Spring框架提供了转换的注解
比如下面,Pattern指定转换的格式
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startDate;
而Jackson也提供了一个针对前后端日期格式转换的注解
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
private Date addTime;
同时Jackson还会遇到一个问题就是转换后的时间采用时间是非东八区,所以如果是有对东八区时间需求的话还要加一个注解属性
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date addTime;