春天-@ResponseStatus和@ResponseBody无法与@ExceptionHandler一起使用

我试图实现一个@ControllerAdvice来全局处理与我的Web应用程序相关的一些常规异常.我想发送一个包装好的JSON响应,并相应设置响应状态.这是一个代码示例.

@ControllerAdvice
public class GlobalErrorHandler {

    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Response handleAllErrors() {
        Response wrapped = new Response(HttpServletResponse.SC_BAD_REQUEST, "error");
        wrapped.setMessage("Could not retrieve data");
        return wrapped;
    }
}

响应是用于包装响应的POJO.问题是,尽管有@ResponseStatus批注,但是响应始终具有状态代码500(内部服务器错误),默认错误页面显示堆栈跟踪.甚至@ResponseBody似乎也不起作用.但是documentation指出我可以在@ExceptionHandler方法上发送JSON响应.我不明白我在这里做错了什么.

我正在使用Spring 3.2.8发布框架,如果需要的话,可以使用Gson进行消息转换.

任何帮助将不胜感激.

解决方法:

找到了问题.这是因为未定义Response POJO的所有获取器和设置器.

上一篇:java-通过gson解析带有混合子对象的json并作为列表发送回


下一篇:c#-与GSON类似的Json.NET松散键入选项