gpt4 book ai didi

exception-handling - ExceptionHandler 返回 JSON 或 XML 在 spring mvc 3 中不起作用

转载 作者:行者123 更新时间:2023-12-04 13:54:58 31 4
gpt4 key购买 nike

代码是这样的:

   @Controller
public class TestController {

@RequestMapping(value = "/testerror", method = RequestMethod.GET)
public @ResponseBody ErrorTO testerror(HttpServletRequest request,HttpServletResponse response) {
throw new ABCException("serious error!");
}


@ExceptionHandler(ABCException.class)
public @ResponseBody ErrorTO handleException(ABCException ex,
HttpServletRequest request, HttpServletResponse response) {
response.setStatus(response.SC_BAD_REQUEST);
return new ErrorTO(ex.getMessage());
}


@RequestMapping(value = "/test", method = RequestMethod.GET)
public @ResponseBody ErrorTO test(HttpServletRequest request,
HttpServletResponse response) {
ErrorTO error = new ErrorTO();
error.setCode(-12345);
error.setMessage("this is a test error.");
return error;
}

}

当我尝试 curl -H "Accept:application/json"-v "http://localhost.com:8080/testerror"
我收到此错误:
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver - 找不到支持返回类型 [class com.kibboko.poprocks.appservices.dtos.ErrorTO] 和 [application/json] 的 HttpMessageConverter

但是如果我尝试 curl -H "Accept:application/json"-v "http://localhost.com:8080/test",工作并返回 json 响应。 “应用程序/xml”也有效。

我需要处理异常处理程序有什么特别之处,以便它可以与 json 或 xml 一起使用吗?谢谢!

最佳答案

看来 AnnotationMethodHandlerExceptionResolver 有自己的 HttpMessageConverter 数组s。您需要将其配置为使用与 AnnotationMethodHandlerAdapter 相同的数组。 .

但是,当 AnnotationMethodHandlerAdapter 时可能会很复杂是隐式声明的。也许声明以下 FactoryBean在所有情况下都可能有帮助:

public class AnnotationMethodHandlerExceptionResolverFactoryBean
implements FactoryBean<AnnotationMethodHandlerExceptionResolver> {
@Autowired
private AnnotationMethodHandlerAdapter a;

public AnnotationMethodHandlerExceptionResolver getObject()
throws Exception {
AnnotationMethodHandlerExceptionResolver r = new AnnotationMethodHandlerExceptionResolver();
r.setMessageConverters(a.getMessageConverters());
return r;
}

...
}

关于exception-handling - ExceptionHandler 返回 JSON 或 XML 在 spring mvc 3 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948627/

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