Spring 3,ReST,@ ResponseBody和@ExceptionHandler

Col*_*ers 5 spring jaxb2

我一直在尝试使用简单的基于Spring 3的ReST Web服务进行异常处理.基于我所看到的一切,有一个错误阻止它自动使用@ResponseBody和@ExceptionHandler注释

https://jira.springsource.org/browse/SPR-6902

因此,在Spring 3.1或3.0.6之前不支持它,当前执行异常处理的最佳方法是什么?我看过很多帖子,但没有找到一个对我有用的明确答案.理想的解决方案是自动为xml和json提供支持

  • 我是否必须手动定义整个编组设置?这不会消除使用Spring 3休息支持的注释的价值吗?
  • 似乎是为了手动定义编组(即Jaxb2Marshaller)我需要在spring-ws上添加一个新的依赖,这有点痛苦
  • 是否更容易定义一个'Response'对象,我的所有方法返回并将所有函数包装在try/catch块中?

dan*_*nik 7

您可以重定向错误,然后返回一些内容@ResponseBody:

@ExceptionHandler(Exception.class)
public ModelAndView handleMyException(Exception  exception) {
    return new ModelAndView("redirect:errorMessage?error="+exception.getMessage());
} 

@RequestMapping(value="/errorMessage", method=RequestMethod.GET)
@Responsebody
public String handleMyExceptionOnRedirect(@RequestParameter("error") String error) {
    return error;
} 
Run Code Online (Sandbox Code Playgroud)

有点难看,但这只是解决,直到修复将可用.

  • +1解决方法.这也意味着客户端必须处理重定向.如果他期待结果,可能会产生问题.只是一些人抬头......干杯! (2认同)