gpt4 book ai didi

java - 如何在 Spring MVC 中针对 HTML 和 JSON 请求以不同方式处理异常

转载 作者:IT老高 更新时间:2023-10-28 13:45:20 27 4
gpt4 key购买 nike

我在 Spring 4.0.3 中使用以下异常处理程序来拦截异常并向用户显示自定义错误页面:

@ControllerAdvice
public class ExceptionHandlerController
{
@ExceptionHandler(value = Exception.class)
public ModelAndView handleError(HttpServletRequest request, Exception e)
{
ModelAndView mav = new ModelAndView("/errors/500"));
mav.addObject("exception", e);
return mav;
}
}

但现在我想要对 JSON 请求进行不同的处理,因此当发生异常时,我会收到此类请求的 JSON 错误响应。目前上述代码也是由 JSON 请求触发的(使用 Accept: application/json header ),并且 JavaScript 客户端不喜欢 HTML 响应。

如何以不同方式处理 HTML 和 JSON 请求的异常?

最佳答案

ControllerAdvice 注释有一个名为 basePackage 的元素/属性,可以设置它来确定它应该扫描哪些包以查找 Controller 并应用建议。因此,您可以做的是将处理正常请求的 Controller 和处理 AJAX 请求的 Controller 分离到不同的包中,然后编写 2 个带有适当 ControllerAdvice 注释的异常处理 Controller 。例如:

@ControllerAdvice("com.acme.webapp.ajaxcontrollers")
public class AjaxExceptionHandlingController {
...
@ControllerAdvice("com.acme.webapp.controllers")
public class ExceptionHandlingController {

关于java - 如何在 Spring MVC 中针对 HTML 和 JSON 请求以不同方式处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23582534/

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