最近在做毕设,用到了Spring Boot。有个功能用到了分页,百度了一下Spring Boot分页的用法,发现只要在Controller类的方法参数列表里添加一个Pageable类型的参数Spring Boot就会自动拼装请求参数里匹配的参数生成Pageable对象。类似于这样。
@RequestMapping("/queryTouristAttraction")
public Message queryTouristAttraction(Pageable pageable,@RequestBody TouristAttractionQueryCondition queryCondition){
return Message.success(touristAttractionService.queryTourAttraction(pageable,queryCondition));
}
因为我的项目前后端使用Json交互的,所以我把Pageable的参数也写到相应的Json请求参数里。请求参数的格式如下。
{"queryCondition":{},"pageable":{"page":0,"size":20}}
用这个字符串虽然请求成功了,但是修改参数size为10后发现还是返回20条数据,修改page为1后还是返回第0页的数据。遂DEBUG之。发现参数并未注入pageble对象,后台接收的pageable对象的值都是一个默认值。然后百度,没找到结果。找到stackoverflow上,发现Spring Boot并不支持自动解析并填充Json里面的pageable对象。需要在请求的参数里带。比如使用get方法时这样请求。
localhost:8080/commentController/getCommentPage?page=1&size=5
参数才会被自动注入到方法参数里的pageable对象。