如何在应用程序中捕获404错误并呈现自定义html(如index.html)?我不想使用/ error文件夹中的页面。
例如,如果我要http://localhost:8080/test且没有用于测试的映射,则我的应用程序应在/ resources / template文件夹内呈现index.html
谢谢
****编辑****
kinda用这种方法解决了,不好的是,即使更改getErrorPath返回值,我也无法更改请求映射的路径。
@Controller
public class MyCustomErrorController implements ErrorController {
@RequestMapping("/error")
public String handleError() {
return "globalerrorview";
}
@Override
public String getErrorPath() {
return "/error";
}
}
答案 0 :(得分:0)
有很多方法可以实现自定义错误页面。一种简单的方法是使用/resources/public/error/404.html
,这在您的情况下是不希望的。
选项:1 您可以尝试配置ControllerAdvice吗?
application.properties
spring.mvc.throw-exception-if-no-handler-found=true
----------------------
@ControllerAdvice
class YourApplicationExceptionHandler {
@ResponseStatus(HttpStatus.NOT_FOUND) // 404
@ExceptionHandler(NoHandlerFoundException.class)
public ModelAndView handleNoHandlerFoundException() {
return new ModelAndView("viewName");
}
}
选项2: 如果您为错误定义了其他路径,则只需更改/ error路径即可。在您的Controller中,定义相应的路径映射并路由到自定义视图。
server.error.path=/yourcustomerrorpath
选项3:使用ErrorController
@Controller
public class MyCustomErrorController implements ErrorController {
@RequestMapping("/error")
public String handleError() {
return "globalerrorview";
}
@Override
public String getErrorPath() {
return "/error";
}
}