【问题标题】:How does webjars files get resolved as pathwebjars文件如何被解析为路径
【发布时间】:2016-05-30 20:27:09
【问题描述】:

我正在使用 spring mvc 和 spring boot 来开发一个 web 应用程序,我有一个关于 webjars 的问题。在 thymeleaf 中添加 webjar 的路径,例如:th:href="@{/webjars/bootstrap/...}"

现在当我通过tomcat解析后查看页面源时,链接标签中的实际href属性为:href="/webjars/bootstrap/..."

但是在 tomcat 中查看 web 应用程序的目录结构,没有这样的文件(在 3.3.6 内部找不到 bootstrap.min.js ...直到我们到达 webjars 文件夹)..相反,这些文件位于 lib 文件夹中的 jar 文件中,该文件夹与目录结构中的 html 文件相距甚远.. 那么它是如何解决的呢? href属性不是应该根据html文件的当前目录位置来引用文件吗?

【问题讨论】:

    标签: spring-mvc tomcat thymeleaf webjars


    【解决方案1】:

    WebJars 利用 Tomcat 中的自动静态资源处理。使用 Tomcat / Servlet 3,META-INF/resources 目录中的 CLASSPATH 上的文件会自动公开为 servlet 上下文下的静态资源。因此,如果您在 CLASSPATH 上有一个包含 META-INF/resources/foo.txt 的 jar,并且您的 web 应用程序正在根上下文中运行,那么该文件将自动在以下位置可用:http://localhost:8080/foo.txt

    由于 Bootstrap WebJar 有一个类似的文件:
    META-INF/resources/webjars/bootstrap/3.3.6/js/bootstrap.min.js
    可在:
    http://localhost:8080/webjars/bootstrap/3.3.6/js/bootstrap.min.js

    【讨论】:

    • 如果我的 web 应用程序类似于 localhost:8080/testexample/foo.txt,我将如何获得引导 css。我正在使用 这不起作用。
    • 您使用的是什么服务器?您是否将 WebJar 添加到您的构建/类路径中?
    • 是的,我有。所以我的问题是如果我使用localhost:8080/foo.txt,引导程序加载正常。但如果我有类似 localhost:8080/testexample/foo.txt 的东西,它就不起作用了。
    • 可能需要绝对路径?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2013-06-04
    • 2019-12-08
    • 2014-01-16
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    相关资源
    最近更新 更多