Solución:
Primero, si está usando @RestController
anotación no necesitas la @ResponseBody
anotación, deshazte de eso.
En segundo lugar, si está tratando de tener un controlador REST, entonces le faltan algunas cosas, hágalo así:
@RequestMapping(value = "/sigla/{sigla}", method = RequestMethod.GET, consumes = "application/json", produces="application/json")
public ResponseEntity<PaisDTO> obterPorSigla(@PathVariable String sigla) {
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
PaisDTO paisDTO = service.obterPorSigla(sigla);
if(paisDTO != null) return new ResponseEntity<>(paisDTO, headers, HttpStatus.OK);
else return new ResponseEntity<>(headers, HttpStatus.OK);
}
En el ejemplo anterior, si obtiene un valor nulo, devolverá una respuesta JSON vacía.
La única forma que pude encontrar fue crear una clase vacía
@JsonSerialize
public class EmptyJsonBody {
}
Luego agregue esto a su respuesta
@PostMapping(value = "/sigla/{sigla}")
public ResponseEntity obterPorSigla(@PathVariable String sigla) {
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
PaisDTO paisDTO = service.obterPorSigla(sigla);
ResponseEntity.BodyBuilder responseBuilder = ResponseEntity.ok().headers(headers);
if(paisDTO != null) {
return responseBuilder.body(paisDTO);
} else {
return responseBuilder.body(new EmptyJsonBody());
}
}
Solución 1: Tienes que implementar tu clase de entidad con Serializable Solución 2: Tu clase debe tener getter y setter En mi caso, el getter y setter recibieron modificadores de acceso protegido. así que los cambié a públicos y voló funcionó
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)