SimpleMappingExceptionResolver is an implementation of HandlerExceptionResolver. It can be used to map exception classes to view names and view names to status codes.
@EnableWebMvc @ComponentScan("com.logicbig.example") public class AppConfig {
@Bean HandlerExceptionResolver errorHandler () { SimpleMappingExceptionResolver s = new SimpleMappingExceptionResolver();
//exception to view name mapping Properties p = new Properties(); p.setProperty(NullPointerException.class.getName(), "npeView"); p.setProperty(OrderIdNotValidException.class.getName(), "OrderIdNotValidView"); s.setExceptionMappings(p);
//mapping status code with view response. s.addStatusCode("npeView", 404);
//setting default error view s.setDefaultErrorView("defaultErrorView"); //setting default status code s.setDefaultStatusCode(400);
return s; }
@Bean public ViewResolver viewResolver () { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } }
@Bean HandlerExceptionResolver customExceptionResolver () { SimpleMappingExceptionResolver s = new SimpleMappingExceptionResolver(); Properties p = new Properties(); //mapping spring internal error NoHandlerFoundException to a view name. p.setProperty(NoHandlerFoundException.class.getName(), "error-page"); s.setExceptionMappings(p); //uncomment following line if we want to send code other than default 200 //s.addStatusCode("error-page", HttpStatus.NOT_FOUND.value());
//This resolver will be processed before default ones s.setOrder(Ordered.HIGHEST_PRECEDENCE); return s; }