gpt4 book ai didi

spring-boot - Spring 启动分页中的多个请求参数

转载 作者:行者123 更新时间:2023-12-05 00:47:21 26 4
gpt4 key购买 nike

我知道这个问题可能会重复,但我尝试了很多都没有成功

我需要在 Spring Boot Rest Controller 中创建多个 RequestParam,如下所示:

@GetMapping("/prd-products/test")
@Timed
public ResponseEntity<List<Test>> getAllTests(@RequestParam (required = false) String search, @RequestParam (required = false) Pageable pageable) {
Page<Test> page = prdProductsService.findAllTest(search, pageable);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/prd-products");
return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK);
}

当我尝试通过 url 调用此服务时:

http://localhost:9116/api/prd-products/test?search=id==1,id==2&pageable=0&size=2 

它给了我以下错误

"title": "Bad Request",
"status": 400,
"detail": "Failed to convert value of type 'java.lang.String' to required type 'org.springframework.data.domain.Pageable'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'org.springframework.data.domain.Pageable': no matching editors or conversion strategy found",

当我尝试发送一个请求参数时,它成功工作。

注意:id==1,id==2是搜索中解析字段的方式

最佳答案

使用 Spring Boot,您只需注册 PageableHandlerMethodArgumentResolver bean

@Bean
public PageableHandlerMethodArgumentResolver pageableResolver() {
return new PageableHandlerMethodArgumentResolver();
}

在 Controller 中

public ResponseEntity<List<Test>> getAllTests(
@RequestParam (required = false) String search,
@PageableDefault(page = 0, size = 100) Pageable pageable
) {
...
}

然后将您的查询参数调整为...&page=0&size=2

关于spring-boot - Spring 启动分页中的多个请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57590659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com