首页 > 解决方案 > 如何在 Sonar 不抱怨的情况下实现 Spring ErrorController?

问题描述

我已经实现了一个自定义错误控制器来显示用户自定义错误视图。我按照教程(找不到了),所以我的控制器看起来像这样:

@Controller
public class CustomErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError(HttpServletRequest request) {
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);

        if (status != null) {
            Integer statusCode = Integer.valueOf(status.toString());

            if (statusCode == HttpStatus.FORBIDDEN.value()) {
                return "error/403";
            } else if (statusCode == HttpStatus.NOT_FOUND.value()) {
                return "error/404";
            } else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
                return "error/500";
            }
        }
        return "error/default";
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }

}

到目前为止一切顺利,但自 2019 年 5 月 17 日以来,SonarQube 抱怨@RequestMapping没有方法。所以我添加了我正在使用的 4 种方法:

@RequestMapping(value = "/error", method = { RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT,
            RequestMethod.DELETE })

但是Sonar现在抱怨我的方法太多了。那么实现符合此 Sonar 规则的自定义 ErrorController 的正确方法是什么?

标签: spring-mvcsonarqube

解决方案


由于这是您的“默认错误页面”路由,因此由于重定向,它将始终是 GET,因此您可以安全地更改为@GetMapping.


推荐阅读