如何将模型属性添加到默认错误页面

时间:2018-06-21 12:20:59

标签: spring-mvc spring-boot exception-handling model url-mapping

当用户请求应用程序中没有任何映射的url(例如/ aaa / bbb之类的应用程序中没有映射)的网址时,处理默认未找到错误的最佳方法是什么)同时可以向页面添加模型属性?

1 个答案:

答案 0 :(得分:0)

SO中有一些问题,但是这些问题又给我带来了其他问题,更重要的是,它们没有说明如何向错误页面添加模型属性。 我发现的最佳解决方案是:

  1. 创建一个实现ErrorController并覆盖的控制器 其getErrorPath()方法。
  2. 在该控制器中创建一个注释为的处理程序方法     @RequestMapping("/error")

通过这种方法,您可以添加所需的任何模型属性,并返回所需的任何视图名称:

@Controller
public class ExceptionController implements ErrorController {

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

    @RequestMapping("/error")
    public String handleError(Model model) {
        model.addAttribute("message", "An exception occurred in the program");
        return "myError";
    }
}

现在,如果您要处理其他特定的异常,则可以为它们创建@ExceptionHandler方法:

@ExceptionHandler(InvalidUsernameException.class)
public String handleUsernameError(Exception exception, Model model) {
    model.addAttribute("message", "Invalid username");
    return "usernameError";
}

注释

  • 如果您在类中添加了特定的异常处理程序,请不要忘记用@ControllerAdvice(以及@Controller)来注释控制器

  • 覆盖的getErrorPath()方法可以返回您想要的任何路径以及/error