Configurer web.xml avec réglage
<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>
Créer un nouveau contrôleur
/**
* 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;
}
}
Intéressant. Pouvez-vous spécifier quel HttpStatus utiliser sur le site de lancement (c'est-à-dire ne pas l'avoir compilé dans la classe Exception)? –
@mattb: Je pense que le point de '@ ResponseStatus' est que vous définissez tout un tas de classes d'exceptions bien typées et bien nommées, chacune avec leur propre' @ ResponseStatus'. De cette façon, vous découplerez votre code de contrôleur du détail des codes de statut HTTP. – skaffman
Je vois. Jolie idée soignée. Je dois commencer à utiliser les annotations 3.0 et apprendre toute cette bonté! –