【问题标题】:Thymeleaf and Static Resources with fingerprintThymeleaf 和带指纹的静态资源
【发布时间】:2015-07-07 00:02:28
【问题描述】:

我尝试使用 ResourceResolvers 和 ResourceTransformers 为我的一些静态文件(例如 app.min.js / style.min.css)添加指纹后缀 http://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources

我已经像这样配置了 ResourceHandler

@Configuration
@EnableWebMvc
public class ResourceResolverConfiguration extends WebMvcConfigurerAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
  registry.addResourceHandler("bower_components/**/*.js", "/assets/**",  "/build/**")
                .addResourceLocations("/bower_components/", "/assets/", "/build/","classpath:/META-INF/webapp/build/")
                .resourceChain(true)
                .addResolver(
                        new VersionResourceResolver()
                            .addContentVersionStrategy("/**")   
                        );
 }
}

在我的主控制器中,我添加了一些调试日志。

logger.debug("js =  '{}'" + this.resourceUrlProvider.getForLookupPath("/build/app.js"));
logger.debug("css = '{}'" + this.resourceUrlProvider.getForLookupPath("/build/styles/style.css"));

运行Web应用程序后,从调试日志中,每个文件中都有指纹

app-5d2c76ad6517f26d252d5cc93a4fc7d2.js

我可以直接访问此文件(即通过 localhost:8080/build/app-5d2c76ad6517f26d252d5cc93a4fc7d2.js)

但是,当我在网络浏览器中点击查看源代码时,它仍然是一个没有任何指纹的原始文件。

在我的 layout.html 中,我像这样加载脚本/链接。

 <script th:src="@{/build/app.js}"></script>
 <link th:href="@{/build/styles/style.css}" rel="stylesheet"></link>

我使用 Thymeleaf 作为模板引擎。 使 Thymeleaf 包含指纹文件的配置或代码应该是什么,还是我遗漏了什么?

非常感谢。

【问题讨论】:

  • 这个问题解决了吗?
  • 有谁知道velocity对应的语法吗?

标签: java spring thymeleaf


【解决方案1】:

确保包含适当的编码过滤器,这是 @{} 语法用来重写 URL 的内容:

@Bean
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
    return new ResourceUrlEncodingFilter();
}

【讨论】:

    【解决方案2】:

    试试这个来渲染指纹和文件名

    <script th:src="${@mvcResourceUrlProvider.getForLookupPath('/build/app.js')}" />
    

    以上结果:

    <script src="/build/app-16e85c31092c68733df3c729b831dcfd.js"></script>
    

    我知道这已经晚了,但我一直在寻找相同的答案来解决如何渲染 url 以与 addContentVersionStrategy 一起使用,结果出现了这个问题,所以希望它可以帮助其他人。

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 2013-08-25
      • 2018-09-11
      • 2015-03-08
      • 2016-08-17
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-15
      相关资源
      最近更新 更多