Com este código
@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
public ResponseEntity<foo> foo() {
Foo model;
...
return ResponseEntity.ok(model);
}
}
Eu recebo a seguinte exceção
java.lang.IllegalArgumentException: No converter found for return value of type
Meu palpite é que o objeto não pode ser convertido em JSON porque Jackson está faltando. Eu não entendo porque, porque eu pensei que Jackson foi construído com bota de mola.
Tentei adicionar Jackson ao pom.xml, mas continuo com o mesmo erro
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
Tenho que alterar alguma propriedade de boot de mola para fazer isso funcionar?
Obrigado
java
spring
spring-boot
jackson
Marc
fonte
fonte
Respostas:
O problema era que um dos objetos aninhados em
Foo
não tinha nenhumgetter/setter
fonte
Adicione a dependência abaixo ao seu pom.xml:
fonte
Adicione o getter / setter ausente no bean mencionado na mensagem de erro.
fonte
Use
@ResponseBody
egetter/setter
. Espero que isso resolva seu problema.e atualize o seu
mvc-dispatcher-servlet.xml
:fonte
org.springframework.boot.autoconfigure.web.HttpMessageConverters
bean com um@Bean
método anotado em sua@SpringBootApplication
classe. Você pode ver isso apenas lendo aorg.springframework.boot.autoconfigure.web.WebMvcAutoconfiguration
classe, o código de autoconfiguração do Spring boot é incrivelmente legível e muitas vezes a maneira mais rápida de descobrir problemas como essesO problema ocorreu no meu caso porque o Spring Framework não conseguiu buscar as propriedades de objetos aninhados. Getters / Setters é uma maneira de resolver. Tornar as propriedades públicas é outra solução rápida e suja para validar se esse é realmente o problema.
fonte
Eu tive o mesmo problema e, infelizmente, não foi possível resolvê-lo adicionando métodos getter ou adicionando dependências de jackson.
Em seguida, olhei para Official Spring Guide e segui seu exemplo conforme fornecido aqui - https://spring.io/guides/gs/actuator-service/ - onde o exemplo também mostra a conversão do objeto retornado para o formato JSON.
Então, fiz meu próprio projeto novamente, com a diferença de que desta vez também adicionei as dependências e os plug-ins de construção que estão presentes no arquivo pom.xml do exemplo Official Spring Guide que mencionei acima.
As dependências modificadas e a parte de construção do arquivo XML se parecem com isto!
Você pode ver o mesmo no link mencionado acima.
E magicamente, pelo menos para mim, funciona. Portanto, se você já esgotou suas outras opções, pode tentar fazer isso, como foi o meu caso.
Apenas uma observação: não funcionou para mim quando adicionei as dependências em meu projeto anterior e fiz o Maven instalar e atualizar as coisas do projeto. Então, eu tive que fazer meu projeto novamente do zero. Eu não me preocupei muito com isso porque o meu é um projeto de exemplo, mas você pode querer procurar por isso também!
fonte
A anotação @EnableWebMvc na classe de configuração resolveu meu problema. (Spring 5, sem web.xml, inicializado por AbstractAnnotationConfigDispatcherServletInitializer)
fonte
Ao usar o Spring Boot 2.2, encontro uma mensagem de erro semelhante e ao pesquisar minha mensagem de erro no Google
esta pergunta aqui está no topo, mas todas as respostas aqui não funcionaram para mim, então acho uma boa ideia adicionar a resposta que eu mesmo encontrei:
Tive que adicionar as seguintes dependências ao
pom.xml
:Depois disso, preciso adicionar o seguinte à classe WebApplication:
Por último, mas não menos importante,
@Controller
usei:Portanto, agora tenho valores de retorno JSON e XML, dependendo do
Accept
cabeçalho das solicitações .Para tornar a saída XML mais legível (remova o nome completo do pacote dos nomes das tags), você também pode adicionar
@XStreamAlias
o seguinte à sua classe de entidade:Esperançosamente, isso ajudará outras pessoas com o mesmo problema.
fonte
Eu estava recebendo o mesmo erro por um tempo. Verifiquei que os métodos getter estavam disponíveis para todas as propriedades. Ainda estava recebendo o mesmo erro. Para resolver um problema, Configure MVC xml (configuração) com
.Isso é necessário para que o Spring detecte a presença de jackson e configure os conversores correspondentes.
fonte
Eu estava enfrentando o mesmo problema há muito tempo, então descobri que tenho que converter o objeto em JSON usando o Mapeador de Objetos e passá-lo como Objeto JSON
fonte
Eu também experimentei esse erro quando por acidente coloquei duas linhas idênticas @JsonProperty ("some_value") em propriedades diferentes dentro da classe
fonte
No meu caso, esqueci de adicionar a biblioteca jackson-core.jar, só adicionei jackson-annotations.jar e jackson-databind.jar. Quando adicionei jackson-core.jar, ele corrigiu o problema.
fonte
Eu vi o mesmo erro quando o escopo da
jackson-databind
dependência foi definido paratest
:Remover a
<scope>
linha corrigiu o problema.fonte
Encontrou o mesmo erro recentemente - o pojo tinha getters / setters e todas as dependências de jackson foram importadas no pom corretamente, mas de alguma forma "<scope>" foi "fornecido" para a dependência de jackson e isso causou o problema. Remover "<Scope>" da dependência de jackson corrigiu o problema
fonte
Eu enfrentei o mesmo problema, mas estava usando o Lombok e meu UploadFileResponse pojo era um construtor.
Para resolver, adicionei a anotação @Getter:
fonte
No meu caso, estou usando uma bota de mola e encontrei um erro semelhante:
Acontece que tenho um controlador com
e vergonhosamente eu não estava adicionando o
Accept
cabeçalho aos meus pedidosfonte
você não tem nenhum método getter / setter.
fonte
No meu caso, estava retornando Boolean em Response Entity e tinha:
Quando eu mudei para abaixo
Funcionou!
Exemplo do que eu tinha.
fonte
A resposta escrita por @Marc também é válida. Mas a resposta concreta é que o
Getter
método é necessário. Você nem mesmo precisa de umSetter
.fonte
Adicione a dependência abaixo em pom.xml:
Estava enfrentando o mesmo problema, pois o tipo de retorno não pode ser vinculado ao MediaType da Classe Foo. Depois de adicionar a dependência funcionou.
fonte