Avec ce code
@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
public ResponseEntity<foo> foo() {
Foo model;
...
return ResponseEntity.ok(model);
}
}
J'obtiens l'exception suivante
java.lang.IllegalArgumentException: No converter found for return value of type
Je suppose que l'objet ne peut pas être converti en JSON car Jackson est manquant. Je ne comprends pas pourquoi parce que je pensais que Jackson était construit avec une botte à ressort.
Ensuite, j'ai essayé d'ajouter Jackson au pom.xml mais j'ai toujours la même erreur
<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>
Dois-je modifier les propriétés des bottes à ressort pour que cela fonctionne?
Je vous remercie
Réponses:
Le problème était que l'un des objets imbriqués dans
Foo
n'avait aucungetter/setter
la source
Ajoutez la dépendance ci-dessous à votre pom.xml:
la source
Ajoutez le getter / setter manquant à l'intérieur du bean mentionné dans le message d'erreur.
la source
Utilisez
@ResponseBody
etgetter/setter
. J'espère que cela résoudra votre problème.et mettez à jour votre
mvc-dispatcher-servlet.xml
:la source
org.springframework.boot.autoconfigure.web.HttpMessageConverters
bean avec une@Bean
méthode annotée dans votre@SpringBootApplication
classe. Vous pouvez voir cela en lisant simplement laorg.springframework.boot.autoconfigure.web.WebMvcAutoconfiguration
classe, le code d'autoconfiguration de Spring Boot est incroyablement lisible et souvent le moyen le plus rapide de résoudre des problèmes comme ceuxLe problème s'est produit dans mon cas, car Spring Framework ne pouvait pas récupérer les propriétés des objets imbriqués. Getters / Setters est une façon de résoudre. Rendre les propriétés publiques est une autre solution rapide et sale pour valider si tel est bien le problème.
la source
J'ai eu le même problème, et malheureusement il n'a pas pu être résolu en ajoutant des méthodes getter ou en ajoutant des dépendances jackson.
J'ai ensuite regardé le Guide officiel du printemps et suivi leur exemple donné ici - https://spring.io/guides/gs/actuator-service/ - où l'exemple montre également la conversion de l'objet retourné au format JSON.
J'ai ensuite à nouveau créé mon propre projet, à la différence que cette fois, j'ai également ajouté les dépendances et les plugins de construction présents dans le fichier pom.xml de l'exemple du guide officiel du printemps que j'ai mentionné ci-dessus.
Les dépendances modifiées et la partie construction du fichier XML ressemblent à ceci!
Vous pouvez voir la même chose dans le lien mentionné ci-dessus.
Et comme par magie, au moins pour moi, cela fonctionne. Donc, si vous avez déjà épuisé vos autres options, vous voudrez peut-être essayer ceci, comme ce fut le cas avec moi.
Juste une remarque, cela n'a pas fonctionné pour moi lorsque j'ai ajouté les dépendances dans mon projet précédent et que Maven a installé et mis à jour le contenu du projet. Du coup, j'ai du refaire mon projet à partir de zéro. Cela ne me dérangeait pas beaucoup car le mien est un exemple de projet, mais vous voudrez peut-être le chercher aussi!
la source
L'annotation @EnableWebMvc sur la classe de configuration a résolu mon problème. (Spring 5, pas de web.xml, initialisé par AbstractAnnotationConfigDispatcherServletInitializer)
la source
Lors de l'utilisation de Spring Boot 2.2, je rencontre un message d'erreur similaire et en recherchant mon message d'erreur sur Google
cette question ici est en haut, mais toutes les réponses ici n'ont pas fonctionné pour moi, donc je pense que c'est une bonne idée d'ajouter la réponse que j'ai trouvée moi-même:
J'ai dû ajouter les dépendances suivantes au
pom.xml
:Après cela, je dois ajouter ce qui suit à la classe WebApplication:
Dernier point mais non le moindre dans mon,
@Controller
j'ai utilisé:Alors maintenant, j'ai des valeurs de retour JSON et XML en fonction de l'en-
Accept
tête des demandes .Pour rendre la sortie XML plus lisible (supprimez le nom complet du package des noms de balises), vous pouvez également ajouter
@XStreamAlias
ce qui suit à votre classe d'entité:Espérons que cela aidera d'autres personnes avec le même problème.
la source
J'obtenais la même erreur pendant un certain temps, j'avais vérifié que les méthodes getter étaient disponibles pour toutes les propriétés, mais j'obtenais toujours la même erreur. Pour résoudre un problème Configurez MVC xml (configuration) avec
Cela est nécessaire pour que Spring détecte la présence de jackson et configure les convertisseurs correspondants.
la source
J'ai été confronté au même problème pendant longtemps, puis j'ai appris à convertir un objet en JSON en utilisant Object Mapper et à le passer en tant qu'objet JSON
la source
J'ai également rencontré une telle erreur lorsque, par accident, j'ai mis deux lignes identiques @JsonProperty ("some_value") sur différentes propriétés à l'intérieur de la classe
la source
Dans mon cas, j'ai oublié d'ajouter la bibliothèque jackson-core.jar, j'ai seulement ajouté jackson-annotations.jar et jackson-databind.jar. Lorsque j'ai ajouté jackson-core.jar, cela a résolu le problème.
la source
J'ai vu la même erreur lorsque la portée de la
jackson-databind
dépendance avait été définie surtest
:La suppression de la
<scope>
ligne a résolu le problème.la source
J'ai fait face à la même erreur récemment - le pojo avait des getters / setters et toutes les dépendances jackson ont été importées correctement dans pom mais comment "<scope>" était "fourni" pour la dépendance jackson et cela a causé le problème. La suppression de «<Scope>» de la dépendance jackson a résolu le problème
la source
J'ai rencontré le même problème mais j'utilisais Lombok et mon pojo UploadFileResponse était un constructeur.
Pour résoudre, j'ai ajouté l'annotation @Getter:
la source
Dans mon cas, j'utilise Spring Boot et j'ai rencontré une erreur similaire:
se trouve que j'ai un contrôleur avec
et honteusement je n'ajoutais pas l'en-
Accept
tête à mes demandesla source
vous n'aviez aucune méthode getter / setter.
la source
Dans mon cas, je retournais Boolean dans Response Entity et j'avais:
Quand je l'ai changé en dessous
Ça a marché!
Exemple de ce que j'avais.
la source
La réponse écrite par @Marc est également valable. Mais la réponse concrète est que la
Getter
méthode est nécessaire. Vous n'avez même pas besoin d'unSetter
.la source
Ajoutez ci-dessous la dépendance dans pom.xml:
Était confronté au même problème que le type de retour ne peut pas être lié avec le MediaType de la classe Foo. Après avoir ajouté la dépendance, cela a fonctionné.
la source