小编Mar*_*712的帖子

Spring用文件名中的点(s)提供静态内容

我想通过Spring提供npm中构建的网页,一切都运行正常,但无论真正的后缀是什么(css,js或html),我都无法提供像main.xxxx.yyy这样的资源.

目录树是这样的:

src/main/resource/resource
                  index.html
                  asset-manifest.json
                  favicon.ico
                  manifest.json
                  service-worker.js
                  static
                     css
                         main.fc656101.css
                         main.fc656101.css.map
                     js
                         main.91794276.js
                         main.91794276.js.map
                     media
                         banner.bdcf92f4.jpg
                         fontawesome-webfont.912ec66d.svg
                         ...
Run Code Online (Sandbox Code Playgroud)

这是应用程序类:

@SpringBootApplication
public class Application {
   private static Logger log=Logger.getLogger(Application.class.getName());

@Bean
WebMvcConfigurer configurer () {
    return new WebMvcConfigurerAdapter() {

        @Override
        public void addResourceHandlers (ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/resources/static/*").
                      addResourceLocations("classpath:/static/");
        }
        @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            super.configurePathMatch(configurer);

            configurer.setUseSuffixPatternMatch(false);
        }
    };
}

public static void main(String[] args) {

    SpringApplication.run(Application.class, args);
}
Run Code Online (Sandbox Code Playgroud)

为了调试这个问题,我手动重命名了一些文件并且它可以工作,因此我将问题限制在包含点的文件名中.

我已经看到有人解决了在RestControllers中的请求映射中添加{variable:.+}的类似问题,但是我没有控制器,所以我无法弄清楚如何去做.

编辑:

我发现这个配置:

@Configuration
class ServletConfig extends WebMvcConfigurerAdapter {

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

6
推荐指数
1
解决办法
571
查看次数

标签 统计

java ×1

spring ×1

spring-mvc ×1