gpt4 book ai didi

java - EnableWebMvc 抛出 ServletException : Could not resolve view with name

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:40 24 4
gpt4 key购买 nike

在静态 HTML 页面上使用 Spring Boot + MVC,同时注意到这件事:

首先,我有:

索引 Controller :

@Controller
public class IndexController {

@RequestMapping("/")
public String index() {
return "index.html";
}

@RequestMapping("/{path:[^\\.]+}/**")
public String forward() {
return "forward:/";
}
}

Html文件为:...\src\main\resources\static\index.html

所以当我的主要应用类是:

@SpringBootApplication
public class MyApplication extends WebMvcConfigurerAdapter {

public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

一切正常,在默认路径中:localhost:8080\ 我得到了 index.html 页面内容

但是如果我用 @EnableWebMvc 注释 Application 类

@SpringBootApplication
@EnableWebMvc
public class MyApplication extends WebMvcConfigurerAdapter {

public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

我得到异常:javax.servlet.ServletException:无法在名称为“dispatcherServlet”的 servlet 中解析名称为“index.html”的 View 但是根据this spring doc这是一个有效的配置。

也许有人可以解释一下为什么?我理解错了吗?

最佳答案

根据 spring-boot's docs

The auto-configuration adds the following features on top of Spring’s defaults:

  • Static index.html support.

...

If you want to keep Spring Boot MVC features, and you just want to add additional MVC configuration (interceptors, formatters, view controllers etc.) you can add your own @Configuration class of type WebMvcConfigurerAdapter, but without @EnableWebMvc. If you wish to provide custom instances of RequestMappingHandlerMapping, RequestMappingHandlerAdapter or ExceptionHandlerExceptionResolver you can declare a WebMvcRegistrationsAdapter instance providing such components.

因此,通过添加 @EnableWebMvc,您只需为您禁用 spring-boot 自动配置。即静态index.html支持。

关于java - EnableWebMvc 抛出 ServletException : Could not resolve view with name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41543549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com