我定义了以下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
模板中定义的那些变量的访问权限?
答案 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";
}
换句话说,您必须重新定义通常无需编写新控制器就可以获取的所有变量。