In meinem Request-Handler möchte ich eine Validierung durchführen und basierend auf dem Ergebnis der Validierungsprüfung werde ich verschiedene Antworten zurückgeben (Erfolg/Fehler). Also erstelle ich eine abstrakte Klasse für das Antwortobjekt und mache 2 Unterklassen für den Fehlerfall und den erfolgreichen Fall. Der Code sieht ungefähr so aus, aber er kompiliert nicht und beschwert sich, dass errorResponse und successResponse nicht in AbstractResponse konvertiert werden können.Spring MVC: Wie man verschiedene Typen zurückliefert ResponseEntity body
Ich bin ziemlich neu zu Java Generic und Spring MVC, so dass ich keine einfache Möglichkeit kenne, dies zu lösen.
@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);
}
Erweitert 'CreateUserSuccessResponse'' AbstractResponse'? –
Ja, sowohl CreateUserSuccessResponse und ErrorResponse erweitert AbstractResponse. – dnang