【问题标题】:Remove webjars version from url从 url 中删除 webjars 版本
【发布时间】:2016-06-02 21:17:51
【问题描述】:

我们在项目中使用带有 maven 的 webjars。 所以我们有数百个 JSP 的代码如下:

<%--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>
......... 

您可以猜到,更新到较新版本的 webjar 是一项繁琐的工作。所以我正在寻找允许我导入这样的脚本的解决方案:

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

基本上我想从 url 中删除一个 webjar 版本。 你能为这个问题提出好的简单的解决方案吗?

到目前为止,我提出了资源 servlet,它可以通过 url 猜测要返回哪个文件。但是这个解决方案涉及在应用程序启动时进行完整的资源扫描。

【问题讨论】:

  • 如果您使用压缩,您可以将这些 js 文件创建到一个单独的文件夹中,并且名称不包含版本...

标签: javascript java maven jsp webjars


【解决方案1】:

看看webjars-locator项目,你可以用它来创建合适的请求控制器。

如果使用Spring MVC,则为:

@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);
    }
}

免责声明:这是来自WebJarsdocumentationMaking dependencies version agnostic 部分)的代码。

在这种情况下,您可以通过以下方式请求 js 库:

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

请注意,此网址中没有版本。

您还可以尝试通过使用缓存来优化此请求(以及因此 - 文件系统扫描),但我几乎可以肯定webjars-locator 中已经涉及某种缓存(我还没有检查过)。

【讨论】:

  • 你可以举一个不使用spring或任何其他框架的例子只maven???
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 2019-04-03
  • 2014-11-05
  • 2015-09-11
  • 1970-01-01
  • 2022-09-29
  • 2019-01-25
  • 2021-06-04
相关资源
最近更新 更多