Spring boot不会将文件夹请求映射到“索引.html”文件
2022-09-01 17:29:26
我有以下结构的文件夹:static
索引.html
docs/index.html
Spring Boot 正确地将请求映射到 。但它没有将请求映射到(请求正常工作)。/
index.html
/docs/
/docs/index.html
/docs/index.html
如何将文件夹/子文件夹请求映射到适当的文件?index.html
我有以下结构的文件夹:static
索引.html
docs/index.html
Spring Boot 正确地将请求映射到 。但它没有将请求映射到(请求正常工作)。/
index.html
/docs/
/docs/index.html
/docs/index.html
如何将文件夹/子文件夹请求映射到适当的文件?index.html
您可以手动添加视图控制器映射来实现此目的:
@Configuration
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/docs").setViewName("redirect:/docs/");
registry.addViewController("/docs/").setViewName("forward:/docs/index.html");
super.addViewControllers(registry);
}
}
第一个映射会导致 Spring MVC 在请求时(不带尾部斜杠)向客户端发送重定向。如果在 中有相对链接,则这是必需的。第二个映射将任何请求转发到内部(不向客户端发送重定向)到子目录中。/docs
/docs/index.html
/docs/
index.html
docs
在Java 8在接口中引入默认方法后,已在Spring 5 / Spring Boot 2中弃用。WebMvcConfigurerAdapter
现在使用它将引发警告:
WebMvcConfigurerAdapter 类型已弃用
因此,为了使@hzpz的解决方案再次起作用,我们需要按如下方式进行更改:
@Configuration
public class CustomWebMvcConfigurer implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/docs").setViewName("redirect:/docs/");
registry.addViewController("/docs/").setViewName("forward:/docs/index.html");
}
}