Muy buenas, he creado en cada controller un método que captura una excepción, y me redirige a una pagina de error:
@ExceptionHandler(Exception.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
public @ResponseBody
RedirectView handleException(Exception e, HttpServletResponse response) {
response.setStatus(HttpServletResponse.SC_INTERNAL _SERVER_ERROR);
logger.error(" error ERROR:" + e.getLocalizedMessage()+"**"+e.getMessage()+"**"+e .getCause()+"**"+e.getClass());
RedirectView redirectView = new RedirectView("descuadreTPV/error");
redirectView.addStaticAttribute("errorMessage", e.getMessage());
return redirectView;
}
@RequestMapping(value = "/error")
public String errorRedirectPage(HttpServletRequest request, Model model, @RequestParam("errorMessage") String errorMessage)
{
model.addAttribute("errorMessage", errorMessage);
return "error/error";
}
Pues bien, esta redirección se produce perfectamente para métodos en los cuales se produce un error con la cabecera:
@RequestMapping(value = "/file",method = RequestMethod.GET)
Pero para aquellos métodos con esta otra cabecera:
@RequestMapping(value = "/loadFichero", method = RequestMethod.POST)
public @ResponseBody
La excepción se captura y se pasa por los métodos arriba indicados, pero no se produce la redirección, se queda en la misma pagina como si nada.
Alquien podría decirme por que?