154 votes

Que renvoyer si la méthode du contrôleur Spring MVC ne renvoie pas de valeur ?

J'utilise l'outil jQuery $.getJSON() pour faire des appels asynchrones à mon simple backend Spring MVC. La plupart des méthodes du contrôleur Spring ressemblent à ceci :

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public @ResponseBody SomePOJO getSomeData(@ModelAttribute Widget widget,
    @RequestParam("type") String type) {
    return someDAO.getSomeData(widget, type);
}   

J'ai configuré les choses de manière à ce que chaque contrôleur renvoie le fichier @ResponseBody en tant que JSON, ce qui est ce que le côté client attend.

Mais que se passe-t-il lorsqu'une requête n'est pas censée renvoyer du contenu au côté client ? Je peux avoir :

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
public @ResponseBody void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}

Si non, quelle est la syntaxe appropriée à utiliser ici ?

2voto

Brett Ryan Points 4905

Il n'y a rien de mal à renvoyer un vide @ResponseBody et vous devriez pour POST demandes.

Utilisez les codes d'état HTTP pour définir les erreurs dans les routines de gestion des exceptions, car d'autres mentionnent l'état de réussite. Une méthode normale comme la vôtre renverra un code de réponse de 200 ce qui est ce que vous voulez, n'importe quel gestionnaire d'exception peut alors renvoyer un objet d'erreur et un code différent (i.e. 500 ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X