2016-06-29 12 views
3

キャッシュバスト処理にVersionResourceResolver [Spring Boot 1.2.0]を使用しています。以下のコードを使用すると、CSSリソースはバージョン番号を取得しますが、Cssファイル内のURLはCssLinkResourceTransformerを使用した後でもバージョンを取得しません。CssLinkResourceTransformerがURLの現在のCSSファイルを変更していません

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

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/css/**") 
      .addResourceLocations("/css/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new CssLinkResourceTransformer()) 
      .addTransformer(new AppCacheManifestTransformer()); 
} 

.navbar-header { 
    height: 58px; 
    background: transparent url("../images/logo-bg.png") no-repeat left center; 
} 

GET https://localhost:8443/myapp/css/layout-4a5a9811a2a00e7da9b9c0f0fcfbd343.css 
GET https://localhost:8443/myapp/images/logo-bg.png 

ここには何か不足していますか? URLのCSSファイルをバージョンアップする方法。おかげ

EDIT: 私はaddResourceHandlers私は今それを持ってい方法の完全なコードを提供している必要があります申し訳ありません。 、同じの下"/css/**""/images/logo-bg.png"が一致しないパターンに一致

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/css/**") 
      .addResourceLocations("/css/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new CssLinkResourceTransformer()) 
      .addTransformer(new AppCacheManifestTransformer()); 

    registry.addResourceHandler("/fonts/**") 
      .addResourceLocations("/fonts/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new AppCacheManifestTransformer()); 

    registry.addResourceHandler("/html/**") 
      .addResourceLocations("/html/"); 

    registry.addResourceHandler("/images/**") 
      .addResourceLocations("/images/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new AppCacheManifestTransformer()); 

    registry.addResourceHandler("/js/**") 
      .addResourceLocations("/js/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new AppCacheManifestTransformer()); 
} 

答えて

2

あなたの設定のみマップリソースを見つけてください。

次のようにお試しいただけますか?

registry.addResourceHandler("/css/**", "/images/**") 
     .addResourceLocations("/css/", "/images/") 

相互に作用するために、リソーストランスフォーマ/リゾルバは一意のリソースハンドラ内で宣言する必要があります。

+0

@brain - あなたのコメントのおかげで、私は使用している完全なコードで私の質問を更新しました。既にあなたが提案した内容を設定しましたが、それでも問題は解決しません。 – sureshd

+2

リソース処理インフラストラクチャを別々のリソースハンドラに登録しているため、動作しません。 1つの 'addResourceHandler'の下ですべてを宣言してください。さもなければ、リソースチェーンは別個の登録からリソースを適切に処理できません。 –

+0

@brain - 申し訳ありませんが、私は返信に遅れました。解決していただきありがとうございます.1つの 'addResourceHandler'の下にあるものすべてを宣言した後に動作します – sureshd

関連する問題