相关疑难解决方法(0)

Spring @ExceptionHandler不能与@ResponseBody一起使用

我尝试为休息控制器配置一个spring异常处理程序,该处理程序能够根据传入的accept头将映射呈现给xml和json.它现在抛出500个servlet异常.

这工作,它拿起home.jsp:

@ExceptionHandler(IllegalArgumentException.class)
public String handleException(final Exception e, final HttpServletRequest request, Writer writer)
{
    return "home";
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

@ExceptionHandler(IllegalArgumentException.class)
public @ResponseBody Map<String, Object> handleException(final Exception e, final HttpServletRequest request, Writer writer)
{
    final Map<String, Object> map = new HashMap<String, Object>();
    map.put("errorCode", 1234);
    map.put("errorMessage", "Some error message");
    return map;
}
Run Code Online (Sandbox Code Playgroud)

在同一控制器中,通过相应的转换器将响应映射到xml或json:

@RequestMapping(method = RequestMethod.GET, value = "/book/{id}", headers = "Accept=application/json,application/xml")
public @ResponseBody
Book getBook(@PathVariable final String id)
{
    logger.warn("id=" + id);
    return new Book("12345", new Date(), "Sven Haiges");
}
Run Code Online (Sandbox Code Playgroud)

任何人?

rest spring-mvc

26
推荐指数
5
解决办法
5万
查看次数

使用spring-mvc将JSON的异常序列化

@RequestMapping(..)
@ResponseBody
public SearchResponse search(SearchRequest request) throws SearchException { .. }
Run Code Online (Sandbox Code Playgroud)

我想回到请求者:

  • 一切都很好的JSON序列化搜索响应
  • 如果SearchException抛出JSON序列化的异常详细信息.

第一部分工作正常(杰克逊在类路径上<mvc:annotation-driven />),但我没有看到一个简单的方法将异常序列化为json.

我可以注册一个自定义处理程序,并从那里写一个JSON字符串,但我可能还需要XML序列化,这意味着我将需要处理程序中的条件.那不是有什么准备好的吗?

spring spring-mvc

6
推荐指数
1
解决办法
3805
查看次数

标签 统计

spring-mvc ×2

rest ×1

spring ×1