Spring Boot应用程序在提供静态内容时显示文件下载选项

时间:2018-08-20 00:06:38

标签: spring spring-boot

我有一个Spring Boot应用程序,其中的一些静态文件保存在resources/static目录中。其中一个是招摇目录。文件系统布局如下:

resources
- static
  - swagger
    - index.html

现在,如果我使用URI localhost:8080/swagger/index.html向我的Web应用发送请求,那么它将正确地提供文件。但是,如果我向localhost:8080/swagger发送请求,则Webapp会显示一个文件下载框,其中包含一个名为swagger的空二进制文件。

我认为第二个URI实际上应该自动为index.html文件提供服务。如何解决此问题?

1 个答案:

答案 0 :(得分:1)

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class WebConfig {
    @Bean
    public WebMvcConfigurerAdapter forwardToIndex() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/swagger").setViewName(
                        "forward:/swagger/index.html");
                registry.addViewController("/swagger/").setViewName(
                        "forward:/swagger/index.html");
            }
        };
    }
}