get请求两个实体类,只有一个能接收到参数。Pageable 接收不到参数

接口:

@RequestMapping(value = "/list", method = RequestMethod.GET)

public CommonResult<Page<AppEntity>> index(
                         @ApiIgnore @PageableDefault(sort = "apkVersionCode", direction = Sort.Direction.DESC) 
                                        Pageable pageable,QuVO quVO)

请求地址:

http://localhost:9585/novel/apk/list?page=1&size=20&apkName=12&sort=apkVersionCode,DESC

为什么QuVO能接收到参数,Pageable 接收不到?

求指点卡了两天了

你先去看看spring的映射

pageable 是实体类,不可能这样直接接收参数的,如果接受也是json字符串,不过一般不需要那么多参数,只需要页码和页大小就可以,就是两个int参数

前端传参错了,需要是pageNumber和pageSize,而不是page和size,因为你的接收对象中没有该属性,如图所示

img

教你一个方式,让QuVO继承Pageable,然后只需要QuVO一个对象即可。

如有帮助,请采纳,十分感谢!

这边建议您仔细检查一下:导包是否正确;
和 依赖版本问题

img

1、Spring data提供了@PageableDefault帮助我们个性化的设置pageable的默认配置。例如@PageableDefault(value = 15, sort = { "id" }, direction = Sort.Direction.DESC)表示默认情况下我们按照id倒序排列,每一页的大小为15。

img


2、使用了@PageableDefault后前端传给的分页参数也就不会被对象接收了


@GetMapping(value = "test")
    public Object test(@SpringQueryMap DeviceAllParam param);

QuVO继承Pageable即可


@RequestMapping(value = "/list", method = RequestMethod.GET)
 
public CommonResult<Page<AppEntity>> index(
                         @ApiIgnore @PageableDefault(sort = "apkVersionCode", direction = Sort.Direction.DESC) QuVO quVO)
public class QuVO  extends Pageable  {

}

这个要看属性名与参数key是否对应吧,你的Pageable和QuVO里的属性是咋写的

@ApiIgnore @PageableDefault(sort = "apkVersionCode", direction = Sort.Direction.DESC)这注解删了试试

改成这样试一下


 @GetMapping("/list")
public CommonResult<Page<AppEntity>> index(QuVO quVO,Pageable pageable)
 

@PageableDefault注解下的参数 前端传参格式为sort=id,asc&sort=name,desc。你检查下请求时的传参格式是否正确

https://blog.csdn.net/weixin_43647393/article/details/112218804

应该是这个注解的缘故@ApiIgnore
@ApiIgnore 注解主要作用在方法上,类上,参数上。
当作用在方法上时,方法将被忽略;作用在类上时,整个类都会被忽略;作用在参数上时,单个具体的参数会被忽略

1、注意前端传参
2、删除 @ApiIgnore