|
|
@@ -11,6 +11,8 @@ import jakarta.servlet.http.HttpServletRequest;
|
|
|
|
|
|
/**
|
|
|
* 处理 controller 返回的错误, 替换默认的 BasicErrorController
|
|
|
+ * 将 /error 作为 Tomcat 的 ErrorPage, org.apache.catalina.core.StandardHostValve#status 方法中会调用 request.setAttribute 方法
|
|
|
+ * 设置错误信息, Attribute 的 key 来自 jakarta.servlet.RequestDispatcher
|
|
|
*
|
|
|
* @author reghao
|
|
|
* @date 2020-06-19 13:34:19
|
|
|
@@ -22,15 +24,16 @@ public class ControllerErrorHandler implements ErrorController {
|
|
|
@RequestMapping("/error")
|
|
|
public String handleError(Model model, HttpServletRequest request) {
|
|
|
int statusCode = 500;
|
|
|
- Object object = request.getAttribute("javax.servlet.error.status_code");
|
|
|
+ Object object = request.getAttribute("jakarta.servlet.error.status_code");
|
|
|
if (object != null) {
|
|
|
statusCode = (int) object;
|
|
|
}
|
|
|
|
|
|
- String prevUrl = (String) request.getAttribute("javax.servlet.forward.request_uri");
|
|
|
model.addAttribute("code", statusCode);
|
|
|
if (statusCode == 404) {
|
|
|
- model.addAttribute("msg", "页面去火星啦~");
|
|
|
+ model.addAttribute("msg", "页面不存在");
|
|
|
+ } else if (statusCode == 403) {
|
|
|
+ model.addAttribute("msg", "没有权限");
|
|
|
} else if (statusCode == 400) {
|
|
|
model.addAttribute("msg", "参数错误");
|
|
|
} else if (statusCode == 500) {
|
|
|
@@ -39,8 +42,9 @@ public class ControllerErrorHandler implements ErrorController {
|
|
|
model.addAttribute("msg", "未知错误");
|
|
|
}
|
|
|
|
|
|
+ String prevUrl = (String) request.getAttribute("jakarta.servlet.forward.request_uri");
|
|
|
String viewPath = "/classic/error";
|
|
|
- if (prevUrl.startsWith("/bg")) {
|
|
|
+ if (prevUrl != null && prevUrl.startsWith("/bg")) {
|
|
|
viewPath = "/admin/error";
|
|
|
}
|
|
|
return viewPath;
|