【发布时间】:2021-07-01 06:15:03
【问题描述】:
我在 app.component.html 中的 mat-paginator:
<mat-paginator [pageSizeOptions]="[5, 15, 30]" [pageSize]="5" [length]="totalElements"
(page)="nextPage($event)">
</mat-paginator>
应用组件:
totalElements = 5;
// tslint:disable-next-line:typedef
nextPage(event: PageEvent) {
const request = {};
// @ts-ignore
request.page = event.pageIndex.toString();
// @ts-ignore
this.totalElements = request.size = event.pageSize.toString();
// @ts-ignore
this.getDevelopers(request);
}
获取开发者:
public getDevelopers(request: {page: string, size: string}): void {
this.loading = true;
this.developerService.getAllUsers(request)
.subscribe(data => {
// @ts-ignore
this.users = data.content;
// @ts-ignore
this.totalElements = data.totalElements;
this.loading = false;
}
}
我的控制器:
@GetMapping
@ResponseBody
@ApiOperation(value = "Get list of all developers")
public Page<GetByIdDeveloperResponse> getAllDevelopers(
@RequestParam(name = "page", defaultValue = "0") int page,
@RequestParam(name = "size", defaultValue = "4") int size,
@RequestParam(name = "sort_by", defaultValue = "id") String sortBy
) {
Page<GetByIdDeveloperResponse> developers = developerMapper.getDeveloperResponseListFromDeveloperList(developerService.getAllDevelopers(page, size, sortBy));
return new PageImpl<GetByIdDeveloperResponse>(developers.getContent(), PageRequest.of(page, size), developers.getTotalElements());
}
在邮递员中一切正常,但在这里不起作用。
我的服务方法看起来如何:
public List<Developer> getAllDevelopers(int page, int size, String sortValue) {
logger.info("Get all developers was called, page: " + page + " size: " + size + " sort by: " + sortValue);
Pageable paging = PageRequest.of(page, size, Sort.by(sortValue));
Page<Developer> pagedResult = developerRepository.findAll(paging);
return pagedResult.getContent();
}
存储库的外观:
@Repository
public interface DeveloperRepository extends PagingAndSortingRepository<Developer, String> {
Developer findById(String id);
}
json 的样子:
当我尝试 GET .../developers?size=10
我总共有 10 个元素,我认为问题与 "totalPages": 1, 有关 因为即使我得到所有元素,也只有 1 页
调试:
【问题讨论】:
-
Angular 客户端的实际调用是什么?你在浏览器开发者工具中观察到了一个吗?如果您展示了
developerService.getAllUsers(request)实现(客户端),这也会很有用。 -
已将 getAllDevelopers 添加到问题中。我在 intelij idea 中对其进行了测试。它成功发送请求,我在控制器中获得了大小并且它可以工作。但问题出在页面上。我就是不能点击这个按钮。角码有问题
-
@Rostyslav,告诉我们
getAllDevelopers()api 返回什么? -
@er-sho 我将其添加到问题中
-
@er-sho 我认为问题与 "totalPages": 1, 因为即使我得到所有元素,也只有 1 页
标签: javascript angular spring-boot