Nel gestore della richiesta, desidero eseguire alcune convalide e in base all'esito del controllo di convalida restituirò una risposta diversa (esito positivo/errore). Quindi creo una classe astratta per l'oggetto risposta e creo 2 sottoclassi per caso di errore e caso riuscito. Il codice ha un aspetto simile a questo, ma non viene compilato, lamentando che errorResponse e successResponse non possono essere convertiti in AbstractResponse.Spring MVC: Come restituire un diverso tipo nel corpo ResponseEntity
Sono abbastanza nuovo per Java Generico e Spring MVC quindi non conosco un modo semplice per risolvere questo problema.
@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);
}
'CreateUserSuccessResponse' estende' AbstractResponse'? –
Sì, sia CreateUserSuccessResponse che ErrorResponse estende AbstractResponse. – dnang