Для интерфейса org.springframework.data.domain.Pageable не найден основной конструктор или конструктор по умолчанию. - PullRequest
0 голосов
/ 16 сентября 2018

Я пытался реализовать Pageable в моем RestController и столкнулся с проблемами с этим сообщением об ошибке «Не найден основной или конструктор по умолчанию для интерфейса org.springframework.data.domain.Pageable»

Мой контроллер -

@GetMapping("/rest/category/all/page")
public Page<ItemCategory> getAllItemCategoryByPage(Pageable pageable){
    Page<ItemCategory> categories = itemCategoryService.getAllItemCategoriesByPageable(pageable);
    return categories;
}

Что я здесь не так делаю.Это приложение Spring Boot 2.0.Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Выбранное решение является обходным путем. Вы можете заставить Spring разрешать параметры автоматически, используя эту конфигурацию:

import org.springframework.context.annotation.Configuration;
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
import org.springframework.data.web.config.EnableSpringDataWebSupport;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@Configuration
@EnableSpringDataWebSupport
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add( new PageableHandlerMethodArgumentResolver());
    }
}
0 голосов
/ 19 апреля 2019

Просто чтобы добавить к уже приведенным ответам относительно включения @EnableSpringDataWebSupport с помощью аннотации.Это уже должно быть включено при автоматической настройке при загрузке.Возможно, вам придется проверить свою конфигурацию, или этот класс автоконфигурации исключен с помощью конфигурации Java или в свойствах приложения.

   org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration
0 голосов
/ 16 сентября 2018

Я бы предложил рефакторинг вашего контроллера на

public List<ItemCategory> getAllItemCategoryByPage(@RequestParam("page") int pageIndex, 
                                                   @RequestParam("size") int pageSize){
     return itemCategoryService
                   .getAllItemCategoriesByPageable(PageRequest.of(pageIndex, pageSize)).getContent();
}

Я думаю, что вы пропустили аннотацию перед Pageable (как вы отправляете эти данные от клиента?).

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