2010-12-01 10 views
4

Vérifié l'arbitre officiel, trouvé un million de façons de faire les choses.
Je suppose que j'ai 2 cas d'utilisation. 1. retour réponse http personnalisée, fondamentalement, je suis chargé de remplir le code de statut, le corps de la réponse (XML ou JSON ou texte). 2. retourner le modèle et la vue. view est généralement une page jsp et remplit la vue avec les données de modle.printemps mvc @requestmapping meilleure pratique

Ma question est quelle est une meilleure façon de faire? il est possible de les mélanger ensemble. Dans ma première utilisation, est-il possible de retourner une vue? il est également possible d'avoir les deux sur eux dans une méthode. quelque chose comme si A renvoie une réponse http personnalisée, si B renvoie ModelAndView.

Merci!

Répondre

2

La valeur de retour de toute méthode de traitement de demande (-à-dire sur marqué avec l'annotation @RequestMapping doit soit identifier une vue (qui va générer la réponse HTTP) ou générer la réponse HTTP elle-même.

chaque méthode gestionnaire des stands seul, je veux dire, vous pouvez renvoyer un nom de vue de certaines méthodes de gestionnaire et de générer la réponse HTTP dans d'autres méthodes de gestionnaire

Consultez 15.3.2.3 arguments de la méthode de gestionnaire pris en charge et les types de retour dans la référence Spring 3x. document au http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/

En tant qu'option pour générer la réponse HTTP dans la méthode du gestionnaire, vous pouvez configurer plusieurs résolveurs de vue; un ou plusieurs pour une résolution de vue normale (pages jsp, mosaïques, etc.) et une ou plusieurs pour une résolution de vue "spéciale" (XML, JSON, etc.). Pour les vues "spéciales", vous pouvez créer votre propre classe d'affichage qui s'étend sur org.springframework.web.servlet.view.AbstractView.

2

Vous pouvez accomplir quelque chose de similaire à ce que vous décrivez en utilisant le ContentNegotiatingViewResolver, qui peut traiter le fait de servir un contenu différent en fonction d'une requête, sans aucun changement requis pour vos annotations @RequestMapping, ou en fait n'importe quoi dans vos contrôleurs.

Il y a beaucoup de ressources sur la façon d'utiliser cette méthode, y compris this et this