Spring MVC: Comment retourner un type différent dans le corps ResponseEntity
Dans mon gestionnaire de requêtes que je veux faire la validation de certains et sur la base des résultats de la vérification de la validation, je reviendrai différents de réponse (succès/erreur). J'ai donc créer une classe abstraite pour la réponse de l'objet et de faire 2 sous-classes pour les cas d'échec et de succès. Le code ressemble à quelque chose comme ça, mais il ne compile pas, se plaindre que errorResponse et successResponse ne peut pas être convertie AbstractResponse.
Je suis assez nouveau à Java Générique et Spring MVC, donc je ne sais pas de façon simple de résoudre ce problème.
@ResponseBody ResponseEntity<AbstractResponse> createUser(@RequestBody String requestBody) {
if(!valid(requestBody) {
ErrorResponse errResponse = new ErrorResponse();
//populate with error information
return new ResponseEntity<> (errResponse, HTTPStatus.BAD_REQUEST);
}
createUser();
CreateUserSuccessResponse successResponse = new CreateUserSuccessResponse();
//populate with more info
return new ResponseEntity<> (successResponse, HTTPSatus.OK);
}
source d'informationauteur dnang | 2013-10-31
Vous devez vous connecter pour publier un commentaire.
Il y a deux problèmes ici:
ResponseEntity<? extends AbstractResponse>
lorsque vous instanciez votre ResponseEntity vous ne pouvez pas utiliser la procédure simplifiée de <> syntaxe vous devez spécifier la classe de réponse que vous allez utiliser
new ResponseEntity<ErrorResponse> (errResponse, HTTPStatus.BAD_REQUEST);
Une autre approche serait d'utiliser les gestionnaires d'erreur
Cette approche permet la possibilité de retourner tout type d'objet, donc un résumé super classe pour les cas de réussite et l'erreur de cas (ou même des cas) n'est plus nécessaire.