Comment soutenir JSONP avec Spring MVC et plusieurs types de réponse
J'ai une méthode d'un contrôleur qui sera de retour HTML ou JSON en fonction de ce qui a été demandé. Voici un stripped-down exemple d'une telle méthode, qui s'inspire d'informations sur la façon de faire ce que j'ai trouvé dans cette question:
@RequestMapping(value="callback")
public ModelAndView callback(@RequestParam("c") String c) {
Map response = new HashMap<String, String>();
response.put("foo", "bar");
return new ModelAndView("fake", "data", new JSONPObject(c, response));
}
J'ai mis le JSONPObject dans le modèle parce que j'ai afin d'être en mesure de l'atteindre à partir de la vue qui rend si HTML a été demandé. Mais cela pose un problème lorsque je me suis rendu JSON avec un rappel:
curl 'http://localhost:8080/notes/callback.json?c=call'
{"data"call(:{"foo":"bar"})}
Comme vous pouvez le voir, parce que j'ai mis mes données dans la partie "données" fente dans le modèle, lorsque le modèle est rendu sous forme de JSON il n'y a que l'emballage supplémentaire. Ce que je cherche est le rendu du JSON (techniquement JSONP) pour ressembler à ceci:
call({"data":{"foo":"bar"}})
Peut-on voir un moyen pour arriver là où je suis en train de passer sans rupture de la capacité de retourner un point de vue qui accède à la JSONPObject lors du rendu?
OriginalL'auteur bkocik | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
C'est de cette façon que je suis en utilisant JSONP avec Spring MVC, juste le modifier en fonction de vos besoins:
sur le Côté Serveur:
Sur le côté client:
OriginalL'auteur danny.lesnik
Je compris cela. Lors du rendu de JSON, le Printemps est à l'aide d'un MappingJacksonJsonView par ma configuration. Ce point de vue a une propriété qui lui dit de trouver l'élément unique de la carte et l'extraire avant le rendu. Après la définition de cette propriété, cela fonctionne à présent.
OriginalL'auteur bkocik