2015-04-28 9 views
8

ho cercato di aggiungere il suffisso di impronte digitali per alcuni dei miei file statici (Es. App.min.js/style.min.css) utilizzando ResourceResolvers e ResourceTransformers http://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resourcesThymeleaf e statico delle risorse con l'impronta digitale

ho config la ResourceHandler come questo

@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("/**") 
         ); 
} 
} 

e nel mio controller principale devo aggiungere un po 'registro di debug.

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

Dopo eseguire l'applicazione web, dal registro di debug, c'è impronta digitale in ogni file come

app-5d2c76ad6517f26d252d5cc93a4fc7d2.js

e posso accedere a questo file direttamente, (vale a dire. Via localhost: 8080/build/app-5d2c76ad6517f26d252d5cc93a4fc7d2.js)

Tuttavia, quando faccio clic su Visualizza sorgente nel browser Web, è comunque un file originale senza alcuna impronta digitale.

che nel mio layout.html carico lo script/collegamento come questo.

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

Io uso Thymeleaf per motore modello. Quale dovrebbe essere la configurazione o il codice per far funzionare Thymeleaf con i file delle impronte digitali o mi sono perso qualcosa?

Grazie mille.

+0

È stato mai risolto? – igracia

+0

Qualcuno conosce la sintassi corrispondente per Velocity? –

risposta

2

assicurarsi che si sta compreso il filtro codifica appropriata, che è ciò che la sintassi @{} utilizza per riscrivere gli URL:

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

provare questo a rendere l'impronta digitale con il nome del file

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

I risultati di cui sopra:

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

So che questo è in ritardo, bu t Stavo cercando la stessa risposta su come eseguire il rendering degli URL con addContentVersionStrategy e questo è venuto fuori, quindi spero che aiuti qualcun altro.

Problemi correlati