我知道,这个问题以前有人问过。
但我确实检查了一堆答案,但找不到任何具有相同上下文的内容来解决问题。
代码非常简单:
@GetMapping("")
@JsonView(Views.GetView.class)
public ResponseEntity<Page<User>> getUsers(
@ParameterObject Pageable pageable) {
System.out.println("pageable " + pageable);
//output pageable Page request [number: 0, size 20, sort: UNSORTED]
Page<User> allUsers = userRepository.findAll(pageable);
System.out.println("page user content " + allUsers.getContent());
//output page user content [User(id=2, name=Marshall, username=marshall44, [email protected], roles=[Role(name=ROLE_USER)])]
PageImpl<User> pagei = new PageImpl<>(allUsers.getContent());
System.out.println("page i " + pagei);
//output page i Page 1 of 1 containing com.serendipity.portfolio.entity.User instances
// return ResponseEntity.ok().body(pagei);
// this also returns {}
return ResponseEntity.ok().body(allUsers);
}
我包含了每个中间变量的输出,以便更好地了解正在发生的事情。
来自 Swagger UI 的请求是
http://localhost:8080/api/v1/users?page=0&size=20
。
问题在于
@JsonView
与 User
的所有属性不匹配。
将此添加到
application.properties
解决了问题:
spring.jackson.mapper.DEFAULT_VIEW_INCLUSION=true