Spring MVC
SimpleMappingExceptionResolver is an implementation of HandlerExceptionResolver. It can be used to map exception classes to view names and view names to status codes.
 package com.logicbig.example;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.springframework.web.servlet.view.InternalResourceViewResolver;
import java.util.Properties;
@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; } }
 package com.logicbig.example;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
@RestController public class ExampleController {
@Autowired private DataService dataService;
@RequestMapping("/order/{orderId}") public String handleRequest (@PathVariable("orderId") String orderId, Model model) { return dataService.getOrderDetail(orderId); }
@RequestMapping("/data/{id}") public String testHandler (@PathVariable("id") String id, Model model) { return dataService.getData(id); }
@RequestMapping("/test") public void testHandler2 () { throw new RuntimeException("test exception"); } }
Original Post
 @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; }
|
|