Spring Data REST - сортировка всегда равна нулю в параметре Pageable в контроллере покоя - PullRequest
0 голосов
/ 03 февраля 2020

Я использую Spring Data REST с Spring Boot (1.5.17), и в моем коде есть следующий контроллер:

@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) {

    }

}

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Контроллер работает правильно, за исключением того, что я не могу использовать такой параметр сортировки, как Students / 1 / notifications? CreateDate, DES C. Он всегда сортирует по дате создания в порядке возрастания.

, если вы пытаетесь передать сортировку в

студентов / 1 / уведомления? CreateDate, DES C

это не будет работать, потому что у Pageable есть параметры сортировки, и вам нужно позвонить, как показано ниже.

студентов / 1 / уведомления ?? sort = madeDate, DES C

0 голосов
/ 03 февраля 2020

Добавить следующий к addArgumentResolvers метод

argumentResolvers.add(new PageableHandlerMethodArgumentResolver());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...