【发布时间】:2020-02-03 05:18:19
【问题描述】:
我在 Spring Boot (1.5.17) 中使用 Spring Data REST,并且我的代码中有以下控制器。
@RestController
public class StudentController {
@RequestMapping(method = GET, value = "students/{id}/notifications")
public @ResponseBody
ResponseEntity<?> getStudentNotifications(@PathVariable Long id, PersistentEntityResourceAssembler resourceAssembler, Pageable page) {
Student student = studentRepo.findOne(id);
Page<Notification> notifications = notificationHandler.getUnreadNotifications(student.getId(),page);
return new ResponseEntity<>(pagedResourcesAssembler.toResource(notifications, resourceAssembler), HttpStatus.OK);
}
}
控制器工作正常,但我不能使用像students/1/notifications?sort=createdDate,DESC 这样的排序参数。它总是按创建日期升序排序。
我将Pageable参数打印到控制台[number: 0, size 20, sort: null],它显示排序属性始终为空。
那么我在这里做错了什么?
编辑
MVC 配置
@Configuration
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
@Qualifier("repositoryExporterHandlerAdapter")
RequestMappingHandlerAdapter repositoryExporterHandlerAdapter;
@Override
public void addArgumentResolvers(
List<HandlerMethodArgumentResolver> argumentResolvers) {
List<HandlerMethodArgumentResolver> customArgumentResolvers = repositoryExporterHandlerAdapter.getCustomArgumentResolvers();
argumentResolvers.addAll(customArgumentResolvers);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
}
}
【问题讨论】:
-
为您的排序添加 queryParams
-
您能详细说明一下吗?
-
你的查询参数是什么
-
students/1/notifications?sort=createdDate,DESC -
您是否在配置中包含
PageableHandlerMethodArgumentResolver以便在 REST 控制器方法中使用 Pageable 参数?
标签: java spring-boot spring-data-rest