当用户请求应用程序中没有任何映射的url(例如/ aaa / bbb之类的应用程序中没有映射)的网址时,处理默认未找到错误的最佳方法是什么)同时可以向页面添加模型属性?
答案 0 :(得分:0)
SO中有一些问题,但是这些问题又给我带来了其他问题,更重要的是,它们没有说明如何向错误页面添加模型属性。 我发现的最佳解决方案是:
ErrorController
并覆盖的控制器
其getErrorPath()
方法。@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
。