如何将默认变量保留在Spring Boot错误控制器中

时间:2018-07-27 03:59:48

标签: java spring thymeleaf

我定义了以下error.html页:

<div><b>Path:</b> <span th:text="${path}" /></div>
<div><b>Status:</b> <span th:text="${status}" /></div>
<div><b>Message:</b>  <span th:text="${message}" /></div>

但是,当我创建自定义错误控制器时,会“丢失”这些变量:

public class MyErrorController implements ErrorController {

  @RequestMapping("/error")
  public String handleError(HttpServletRequest request, Model model) {
       return "error";
   }
}

我将如何重新获得通常在默认error.html模板中定义的那些变量的访问权限?

1 个答案:

答案 0 :(得分:0)

也许经验丰富的人可以给出更好的答案,但这是我找出解决方法的唯一方法:

@RequestMapping("/error")
public String handleError(HttpServletRequest request, Model model, Exception ex) {

    Object path = request.getAttribute("javax.servlet.forward.request_uri");
    Object status = request.getAttribute("javax.servlet.error.status_code");
    Object message = request.getAttribute("javax.servlet.error.message");

    model.addAttribute("path", path);
    model.addAttribute("status", status);
    model.addAttribute("message", message);

    return "error";
}

换句话说,您必须重新定义通常无需编写新控制器就可以获取的所有变量。