W moim module obsługi żądań chcę wykonać pewną walidację i na podstawie wyniku sprawdzenia poprawności zwrócę inną odpowiedź (sukces/błąd). Tak więc tworzę klasę abstrakcyjną dla obiektu odpowiedzi i tworzę 2 podklasy dla przypadku niepowodzenia i udanego przypadku. Kod wygląda mniej więcej tak, ale nie kompiluje się, narzekając, że errorResponse i successResponse nie mogą zostać przekonwertowane na AbstractResponse.Spring MVC: Jak zwrócić inny typ w treści ResponseEntity
Jestem całkiem nowy w Java Generic i Spring MVC, więc nie znam prostego sposobu rozwiązania tego problemu.
@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);
}
Czy 'CreateUserSuccessResponse' rozszerza' AbstractResponse'? –
Tak, zarówno CreateUserSuccessResponse i ErrorResponse rozszerza AbstractResponse. – dnang