前几天学了springboot框架,就想找个项目练练手,毕竟学完不练过几天就全忘光了,于是乎... 就各种踩坑啊

需求:实现带条件的分页查找用户

代码如下:

@GetMapping("/pageList/{pageNum}/{pageSize}")
    public R pageList(
            @ApiParam(name = "pageNum", value = "当前页码", required = true)
            @PathVariable("pageNum") Long pageNum,
            @ApiParam(name = "pageSize", value = "每页记录条数", required = true)
            @PathVariable("pageSize") Long pageSize,
            @ApiParam(name = "queryEduTeacher", value = "查询对象")
            @RequestBody
            UserVO userVo
            ){
        Page<EduTeacher> page = new Page<>(pageNum,pageSize);
        teacherService.pageQuery(page,userVo);
        List<EduTeacher> records = page.getRecords();
        long total = page.getTotal();
        return R.ok().data("total",total).data("rows",records);
    }

该handler中的 userVo 是自定义的VO对象,用来封装分页条件用的;该参数添加了@RequestBody注解,接收Json类型的数据;

但就是不能成功接收数据,起先是自己对着文档敲,感觉哪都正确,为什么就没法获取携带的Json数据呢?

1、将@RequestBody注解去掉,直接在url路径后边携带条件,成功获取数据,说明我们handler内部没有错误,就是在Json接受参数时出错。

2、然后面向百度好长时间查询,发现使用@RequestBody时,就不能使用@GetMapping(),这样就无法将携带的Json数据封装到VO类中,需要改成@PostMapping()才成功。

小小bug,改了好长时间才弄好,真是流下了菜鸡的眼泪...记录一下,给自己加深印象。

谨记:使用@RequestBody注解时,需要配合@PostMapping才能将Json数据封装到实体类中。

 

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐