Retour JSON ou Vue depuis Spring MVC Controller
Je suis désireux de retourner une vue à partir d'un Contrôleur Spring MVC en fonction de la logique. Si une erreur se produit, je veux le retour JSON, si ce n'est, une vue HTML. C'est comme ASP.NET MVC ActionResult, où vous pouvez retourner n'importe quel type de vue et le rendu sera le résultat, et il ne dépend pas du type de contenu qui est envoyé dans la requête. Je ne peux pas trouver des exemples de cette.
source d'informationauteur Mike Flynn
Vous devez vous connecter pour publier un commentaire.
J'ai réalisé cela avec la suivante.
JsonView.java
JS Fonction qui effectue l'appel
Juste au cas où et que vous souhaitez renvoyer du Json sur exception, vous pouvez effectuer les opérations suivantes:
Je ne suis pas sûr que ce soit ce que tu voulais faire, mais juste au cas où.... 🙂
Programme de votre contrôleur pour revenir une autre logique nom de la vue en fonction d'une condition. Par exemple:
Configurez l'affichage des programmes de résolution pour résoudre le nom de la vue
"error"
pour le JSON vue. Spring fournit plusieurs façons de configurer le nom de la vue pour afficher la cartographie, y compris:Par exemple, pour utiliser BeanNameViewResolver:
Il n'y a rien pour vous empêcher de revenir à une réelle
View
objet directement à partir de votre méthode de contrôleur - il ne doit pas être un nom de vue. Si votre contrôleur est possible de construire uneView
objet à l'aide de sa propre logique, et retour, avec ou sans enveloppé dans unModelAndView
objet.C'est probablement plus simple que d'essayer de persuader le
ViewResolver
cadre de faire cela pour vous, bien que cela marcherait aussi bien.Peut-être que vous pouvez regarder ResolveBundleViewResolverce qui vous permet de mélanger les points de vue. Le docs donner quelques informations sur la façon d'utiliser le présent.
De la documentation (par exemple, c'est de mélanger les tuiles et jstl, mais devrait s'appliquer pour les autres aussi)...
fichier de contexte
points de vue.propriétés
D'étendre Chin Huang réponse, voici ce qui fonctionne pour moi. Aucune configuration n'est nécessaire.
Cela va automatiquement convertir le modèle en JSON et d'écrire la réponse.
Ici, le modèle est de type
Map<String,Object>
et la réponse est de typeHttpServletResponse