L'évolution dynamique de l' @ResponseStatus dans l'annotation piloté par Spring MVC
Je suis vraiment pas sûr si cela est réalisable à l'aide de Printemps 3.2 MVC.
Mon Contrôleur a une méthode déclarée comme ci-dessous:
@RequestMapping(method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody List<Foo> getAll(){
return service.getAll();
}
Questions:
- Quel est le sens de
@ResponseStatus(HttpStatus.OK)
? - T-il, signifie que la méthode renverra toujours une
HttpStatus.OK
code d'état. - Que si une exception est levée à partir de la couche de service?
- Puis-je changer le Statut de la Réponse sur la présence de toute exception?
- Comment puis-je gérer plusieurs réponse statuts selon les conditions dans la même méthode?
- 1. Merci de lire Etat vous devriez Probablement utiliser
ResponseEntity
. - captaindebug.com/2012/02/...
Vous devez vous connecter pour publier un commentaire.
@ResponseStatus(HttpStatus.OK)
signifie que la demande sera de retour OK si la méthode de traitement des retours normalement (cette annotation est redondante pour ce cas, que le défaut de réponse de l'état estHttpStatus.OK
). Si le gestionnaire déclenche une exception, l'annotation ne s'applique pas.Cette question a déjà été posée.
Vous avez deux choix. Si la classe exception est un de vos propres, vous pouvez annoter la classe d'exception avec
@ResponseStatus
. L'autre choix est de fournir le contrôleur de classe avec un gestionnaire d'exception, annoté avec@ExceptionHandler
, et ont le gestionnaire d'exception définir le statut de la réponse.Si vous retournez un ResponseEntity directement, vous pouvez définir la HttpStatus en ce que:
Si vous souhaitez renvoyer un message d'erreur autre que 404, HttpStatus a beaucoup d'autres valeurs à choisir.
Vous ne pouvez pas définir de plusieurs statuts de la valeur pour
@ResponseStatus
. Une approche à laquelle je pense est d'utiliser@ExceptionHandler
pour le statut de la réponse qui n'est pasHttpStatus.OK