我在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]
,它显示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) {
}
}
控制器可以正常工作,但不能使用sort参数例如:students / 1 / notifications?createdDate,DESC。它总是按创建日期按升序排列。
[如果您尝试通过排序方式
students / 1 / notifications?createdDate,DESC
因为Pageable具有排序参数,所以您不能像下面这样调用。
students / 1 / notifications ?? sort = createdDate,DESC
将以下内容添加到addArgumentResolvers
方法