gpt4 book ai didi

spring - @ResponseStatus 和@ResponseBody 不适用于@ExceptionHandler

转载 作者:行者123 更新时间:2023-12-01 02:13:27 26 4
gpt4 key购买 nike

我尝试实现一个 @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;
}
}

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

我正在使用 Spring 3.2.8 发布框架,如果重要的话,Gson 用于消息转换。

如有任何帮助,我们将不胜感激。

最佳答案

发现问题。这是因为没有定义Response POJO的所有getter和setter。

关于spring - @ResponseStatus 和@ResponseBody 不适用于@ExceptionHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27332695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com