I'm using the @ExceptionHandler annotation on one of my controllers, but if I use any Exception type other than Exception.class, the page returns the message
The request sent by the client was syntactically incorrect.
Here's my controller:
@Controller @RequestMapping("/foobar") public class TodayInHistoryController { @Autowired(required = true) private TodayInHistoryService service; private static final String DATE_FMT = "yyyyMMdd"; /** * * @return */ @RequestMapping(method = RequestMethod.GET) public HistoryContent getTodayInHistory( @RequestParam(value = "date", required = false) Date date) { if (date != null) return service.getHistoryContent(date); return service.getHistoryContent(); } /** * Binds URL arguments to their correct object representation. * * @param binder */ @InitBinder public void initBinder(WebDataBinder binder) { // Date object binder SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FMT); binder.registerCustomEditor(Date.class, new CustomDateEditor( dateFormat, false)); } /** * * @return */ // If I change the value param of the annotation to Exception.class it works fine... @ExceptionHandler(NumberFormatException.class) public ModelAndView handleParseException(Exception ex) { // create and populate Map to hold error data Map<String, String> errorData = new HashMap<String, String>(); errorData.put("errorMessage","Formatting error occurred"); errorData.put("errorDetails", "None"); // create and return ModelAndView ModelAndView mv = new ModelAndView(); mv.addAllObjects(errorData); return mv; } } Here's my spring config (what's relevant)
@Configuration @Import(ServicesConfig.class) @ImportResource({ "classpath:applicationContext-security.xml", "classpath:dataSources.xml" }) @EnableWebMvc @ComponentScan(basePackages = "my.controller") public class WebConfig { @Bean public ViewResolver contentNegotiatingViewResolver() { ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver(); resolver.setIgnoreAcceptHeader(true); resolver.setDefaultContentType(MediaType.APPLICATION_JSON); resolver.setFavorPathExtension(true); resolver.setOrder(1); // setup mediaTypes Map<String, String> mediaTypes = new HashMap<String, String>(); mediaTypes.put("json", "application/json"); mediaTypes.put("xml", "application/xml"); resolver.setMediaTypes(mediaTypes); // setup defaultViews List<View> defaultViews = new ArrayList<View>(); defaultViews.add(jsonView()); defaultViews.add(xmlView()); resolver.setDefaultViews(defaultViews); return resolver; } @Bean public View jsonView() { return new MappingJacksonJsonView(); } @Bean public View xmlView() { return new MarshallingView(new CastorMarshaller()); } }
NumberFormatException. Can you post your request url andCustomDateEditor?