我已经实现了一个自定义错误控制器,以显示用户自定义错误视图。我遵循了一个教程(找不到了),因此我的控制器如下所示:
@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现在抱怨我方法太多。那么,实现符合this Sonar rule的自定义ErrorController的正确方法是什么?
答案 0 :(得分:1)
由于这是您的“默认错误页面”路由,由于重定向,它始终为GET,因此您可以安全地更改为@GetMapping
。
答案 1 :(得分:0)
遵循此步骤,然后将其写入web.xml
<display-name>App Name </display-name>
<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>