Handle error 404 in web application - not REST application

后端 未结 3 597
不知归路
不知归路 2021-01-05 23:10

I\'m trying to handle 404 error using an @ControllerAdvice in a Spring MVC application totally configured using Javaconfig.

Spring MVC version is 4.1.5<

3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-05 23:52

    The solution is to extend AbstractAnnotationConfigDispatcherServletInitializer and override this method:

    @Override
    protected DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext) {
        final DispatcherServlet dispatcherServlet = (DispatcherServlet) super.createDispatcherServlet(servletAppContext);
        dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
        return dispatcherServlet;
    }
    

    OR this one:

    @Override
    public void customizeRegistration(ServletRegistration.Dynamic registration) {
        registration.setInitParameter("throwExceptionIfNoHandlerFound", "true");
    }
    

    And finally in your ControlerAdvice use this:

    @ExceptionHandler(NoHandlerFoundException.class)
    public String error404(Exception ex) {
    
        return new ModelAndView("404");
    }
    

提交回复
热议问题