Configurar web.xml con el establecimiento de
<error-page>
<error-code>500</error-code>
<location>/error/500</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/404</location>
</error-page>
Crear nuevo controlador
/**
* Error Controller. handles the calls for 404, 500 and 401 HTTP Status codes.
*/
@Controller
@RequestMapping(value = ErrorController.ERROR_URL, produces = MediaType.APPLICATION_XHTML_XML_VALUE)
public class ErrorController {
/**
* The constant ERROR_URL.
*/
public static final String ERROR_URL = "/error";
/**
* The constant TILE_ERROR.
*/
public static final String TILE_ERROR = "error.page";
/**
* Page Not Found.
*
* @return Home Page
*/
@RequestMapping(value = "/404", produces = MediaType.APPLICATION_XHTML_XML_VALUE)
public ModelAndView notFound() {
ModelAndView model = new ModelAndView(TILE_ERROR);
model.addObject("message", "The page you requested could not be found. This location may not be current.");
return model;
}
/**
* Error page.
*
* @return the model and view
*/
@RequestMapping(value = "/500", produces = MediaType.APPLICATION_XHTML_XML_VALUE)
public ModelAndView errorPage() {
ModelAndView model = new ModelAndView(TILE_ERROR);
model.addObject("message", "The page you requested could not be found. This location may not be current, due to the recent site redesign.");
return model;
}
}
Interesante. ¿Puedes especificar qué HttpStatus usar en el sitio de lanzamiento (es decir, no tenerlo compilado en la clase Excepción)? –
@mattb: Creo que el objetivo de '@ ResponseStatus' es que defina un conjunto completo de clases de excepción bien tipadas y fuertemente tipadas, cada una con su propio' @ ResponseStatus'. De esta forma, desacoplarás tu código de controlador del detalle de los códigos de estado HTTP. – skaffman
Ya veo. Idea bastante clara. ¡Necesito comenzar a usar las modificaciones de 3.0 y aprender todo esto bondad! –