Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Serialize exceptions to JSON with spring-mvc

@RequestMapping(..)
@ResponseBody
public SearchResponse search(SearchRequest request) throws SearchException { .. }

I want to return to the requester:

  • JSON-serialized search response in case everything is fine
  • JSON-serialized exception details if SearchException is thrown.

The first part works fine (having Jackson on the classpath and <mvc:annotation-driven />) but I don't see an easy way to serialize the exception as json.

I can register a custom handler, and write a JSON string from there, but I may also need XML serialization, which will mean I'll need conditionals in the handler. Isn't there something ready for that?

like image 245
Bozho Avatar asked May 16 '11 08:05

Bozho


1 Answers

Here's what worked: I took axtavt's suggestion (annotating it with @Component), and added this method to the controller:

@ExceptionHandler(CustomException.class)
public @ResponseBody CustomException handleException(CustomException ex) {
    return ex;
}
like image 156
Bozho Avatar answered Oct 16 '22 13:10

Bozho