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 @Configuration public class AppConfig implements WebMvcConfigurer {
@Override public void configureHandlerExceptionResolvers( List<HandlerExceptionResolver> exceptionResolvers) { 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);
exceptionResolvers.add(s); }
@Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp("/WEB-INF/views/", ".jsp"); } }
@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; }