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


答案 1

您可以手动添加视图控制器映射来实现此目的:

@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.htmldocs


答案 2

在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");
    }
}

推荐