2016-02-21 13 views
5

プロジェクトでは、mavenでWebjarsを使用しています。 だから我々はこのようなコードでのJSPの何百もありますURLからwebjarsのバージョンを削除します

<%--JSP CODE--%> 
<script src="<c:url value="/webjars/jquery/2.2.0/jquery.min.js" />" type="text/javascript"></script> 
<script src="<c:url value="/webjars/bootstrap/3.3.6/js/bootstrap.min.js" />" type="text/javascript"></script> 
......... 

そして、あなたはそれがwebjarsの新しいバージョンにアップデートする面倒な作業だと思うことができますように。だから私は私がこのようなスクリプトをインポートできるようになります解決策を探しています:

​​

基本的に私はURLからwebjarバージョンを削除します。 この問題に対してすばらしい単純な解決法を提案できますか?

これまでのところ、URLで返されるファイルを推測できるリソースサーブレットが用意されています。しかし、このソリューションでは、アプリケーションの開始時に完全なリソーススキャンが行われます。

+1

マイナー化を使用している場合、これらのjsファイルを別のフォルダに作成し、バージョンを含まない名前で作成することができます... – khmarbaise

答えて

5

webjars-locatorプロジェクトを見て、それを使って適切なリクエストコントローラを作成することができます。

@ResponseBody 
@RequestMapping("/webjarslocator/{webjar}/**") 
public ResponseEntity locateWebjarAsset(@PathVariable String webjar, HttpServletRequest request) { 
    try { 
     String mvcPrefix = "/webjarslocator/" + webjar + "/"; // This prefix must match the mapping path! 
     String mvcPath = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); 
     String fullPath = assetLocator.getFullPath(webjar, mvcPath.substring(mvcPrefix.length())); 
     return new ResponseEntity(new ClassPathResource(fullPath), HttpStatus.OK); 
    } catch (Exception e) { 
     return new ResponseEntity<>(HttpStatus.NOT_FOUND); 
    } 
} 

免責事項:これは次のようになりSpring MVCを用いる場合には

これはWebJarsdocumentation(セクションMaking dependencies version agnostic)からのコードです。あなたは次のようにJSライブラリを求めることができます。この場合

<link rel='stylesheet' href='/webjarslocator/bootstrap/css/bootstrap.min.css'> 

このURLにはバージョンがありませんので、予めご了承ください。

また、キャッシュを使用してこの要求(したがってファイルシステムスキャン)を最適化することもできますが、私は確かにある種のキャッシュがすでにwebjars-locatorに含まれていると確信しています。

関連する問題