您的位置:首页 > 编程语言 > Java开发

Spring MVC 在@RequestParam和@RequestBody中使用Java 8时间LocalDateTime

2017-01-18 14:41 597 查看
@RequestParam
中使用的时候:

@PostMapping("/userVipInfoUpdate2")
public Map<String, Object> updateUserInfo(@RequestParam int id,
@RequestParam int vip,
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime time) {
User user = UserFactory.newVipInfoInstance(id, vip, time);
userService.modifyVipInfo(user);
return new OKReturnMap("修改用户信息成功!").getMap();
}


此时发送的数据格式应该是:

{
"id":81,
"vip":2,
"time":"2017-02-12T12:00:00"
}


如果使用的是
@RequestBody
注解,则只需要在对应的User对象中添加一个具有相应字段的构造函数即可(不然会出现400 Bad Request错误)。值得注意的是,发送时的字段可以比构造函数里面的字段少,但是这种时候那些多余的字段会被设置成null:

@PostMapping("/userVipInfoUpdate")
public Map<String, Object> updateUserVipInfo(@RequestBody User user) {
userService.modifyVipInfo(user);
return new OKReturnMap("修改用户信息成功!").getMap();
}


其构造函数为:

public User(int id, int vip, LocalDateTime vipEndTime) {
super();
this.setId(id);
this.setVip(vip);
this.setVipEndTime(vipEndTime);
}


发送的时候数据格式如图所示:



最后注意一点,时间格式月份和日期需要是两位,且能转化成正确的时间。比如
2017-2-13T00:00:00
2017-13-12T00:00:00
都是错误的,也会报错400!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息