2 回答
TA贡献1824条经验 获得超5个赞
将返回类型调整为Page<PostOutputDTO>而不是List<PostOutputDTO>。
将 a 转换List<PostOutputDTO>为 a的最简单方法Page<PostOutputDTO>是
public Page<PostOutputDTO> getTopicPosts(@PathVariable("id") UUID topicId, Pageable pageable) {
return new PageImpl<>(postService.getActivePosts(topicId, pageable));
}
更新:
我仍然没有看到全貌,但我希望存储库方法返回Page实例,
Page<Post> findPostsByTopicAndDeactivatedAtIsNull(...);
Page<Topic> findAllByTypeAndDeactivatedAtIsNull(...);
所以问题来自于PostAssembler#toResources返回 a List,我们不准确地将其转换为Pageback 。
如果我理解正确,您正在利用ResourceAssemblerSupport将 an Iterable<Post>(更准确地说, a Page<Post>)映射到 a List<PostOutputDTO>。
我的建议是不使用PostAssembler#toResources,坚持PostAssembler#toResource和Page#map:
postRepo.findPostsByTopicAndDeactivatedAtIsNull(topic, pageable)
.map(postAssembler::toResource);
TA贡献1805条经验 获得超9个赞
您必须从 spring 返回接口页面:
页面是对象列表的子列表。它允许获取有关它在包含中的位置的信息。
看例子:
public Page<PostOutputDTO> getActivePosts(UUID topicId, Pageable pageable) {
Page<PostOutputDTO> list=postService.getActivePosts(topicId, pageable);
return list;
}
有关更多信息,请参阅参考
添加回答
举报