当我在项目中添加@EnableWebMvc批注时,它不会映射webjar和favicon。

加载在其中调用webjars的索引页时,出现此警告:

    No mapping found for HTTP request with URI [/webjars/bootstrap/4.0.0-beta.2/css/bootstrap.min.css] in DispatcherServlet with name 'dispatcherServlet'
    No mapping found for HTTP request with URI [/webjars/jquery/3.2.1/jquery.min.js] in DispatcherServlet with name 'dispatcherServlet'
    No mapping found for HTTP request with URI [/favicon.ico] in DispatcherServlet with name 'dispatcherServlet'


当我删除此注释时,它没有任何问题,这是什么原因?我怎么解决这个问题?

我也需要此批注仅用于处理“ NoHandlerFoundException”,如下所示:

@ControllerAdvice
public class ControllerExceptionHandler {


    @ExceptionHandler(NoHandlerFoundException.class)
    public ModelAndView handlerNoHandlerFoundException() {

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("errorpage");
        modelAndView.addObject("errorTitle", "404 Not Found ");
        modelAndView.addObject("errorDescription", "The page you are looking for is not available now!!! ");
        System.out.println("ERROR :::::::::::::::::::::: no handler");
        return modelAndView;
    }

}


您对这种情况有什么建议?

最佳答案

Per the Spring Boot documentation(使用@EnableWebMvc)禁用MVC自动配置,并允许您提供所需的内容。在这种情况下,这意味着它将关闭默认资源和WebJar映射。

您可以使用其他方法来自定义配置,例如*Configurer,也可以使用@EnableWebMvc确切指定所需的内容。请参阅Boot的WebMvcAutoConfiguration找出默认值,然后复制所需的内容。

关于java - @EnableWebMvc注释会影响Spring Boot中的某些映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47981770/

10-10 16:47