Estou recebendo este erro após alterar a aplicação para receber o objeto paginação pelo parâmetro.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estou recebendo este erro após alterar a aplicação para receber o objeto paginação pelo parâmetro.
Oi Simone, posta aqui o código do seu controller, inclusive com os imports.
Oi Rodrigo, segue. (obs: meus objetos são diferentes mas a lógica é a mesma)
Main:
package io.github.beinlichsimone.vacationtrip;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.data.web.config.EnableSpringDataWebSupport;
@EnableCaching
@EnableSpringDataWebSupport //paginação e ordenação
@SpringBootApplication
public class VacationTripApplication {
public static void main(String[] args) {
SpringApplication.run(VacationTripApplication.class, args);
}
}
Controller:
package io.github.beinlichsimone.vacationtrip.controller;
import io.github.beinlichsimone.vacationtrip.dto.viagem.ViagemAtualizaDTO;
import io.github.beinlichsimone.vacationtrip.dto.viagem.ViagemDetalheDTO;
import io.github.beinlichsimone.vacationtrip.dto.viagem.ViagemCadastroDTO;
import io.github.beinlichsimone.vacationtrip.dto.viagem.ViagemRetornoDTO;
import io.github.beinlichsimone.vacationtrip.model.Viagem;
import io.github.beinlichsimone.vacationtrip.repository.ViagemRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("viagem")
public class ViagemController {
@Autowired
private ViagemRepository viagemRepository;
@GetMapping("/viagens")
@Cacheable(value="listaViagens")
public Page<ViagemRetornoDTO> getViagens(@PageableDefault(sort = "id", direction = Sort.Direction.DESC) Pageable paginacao){
Page<Viagem> viagens = viagemRepository.findAll(paginacao);
return ViagemRetornoDTO.converterParaDTO(viagens);
}Postman:
No seu projeto tem alguma classe de configuração que implementa a interface WebMvcConfigurer ?
Não tenho...
Pois é, não consigo identificar o possível problema. Você consegue compartilhar seu projeto? via github ou link compartilhado do google drive
Bom dia Rodrigo. Segue o link do meu git: https://github.com/beinlichsimone/vacation-trip/blob/master/src/main/java/io/github/beinlichsimone/vacationtrip/controller/ViagemController.java
No seu projeto tem uma classe chamada WebConfig que acaba sobrescrevendo um compartamento do Spring.
Adicione nela esse método:
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add( new PageableHandlerMethodArgumentResolver());
}
Deu certo Rodrigo. Muito obrigada!