使用Spring Boot的Thymeleaf-无法找到静态资产(CSS)

时间:2018-12-19 14:41:46

标签: spring spring-mvc spring-boot thymeleaf

我在Spring Boot MVC应用程序中使用Thymeleaf模板引擎,但是在加载样式方面有困难。该链接位于header.html文件中(位于资源/模板/片段下),并在login.html中引用(位于资源/模板下)。样式表位于resources / static / css目录中。

<head th:fragment="header">
    <link rel="stylesheet" href="../../static/css/bootstrap.css" th:href='@{/css/bootstrap.css}' />
</head>

login.html

<html>
<header th:replace="fragments/header :: header"></header>

<body class="container">

    <h1>Login page</h1>
   // Code omitted for brevity

  </body>

</html>

我有一个非常典型的目录结构: enter image description here

基于此question和其他来源,看来应用程序应该能够使用指定的链接加载样式表。然而,这种情况并非如此。具体来说,如果我在浏览器的“网络”标签中查看,对样式表的请求将返回302(而不是404),但是未应用样式。此外,如果我在Firefox中单击“样式编辑器”选项卡,则会收到Stylesheet could not be loaded: http://localhost:8080/css/bootstrap.css消息。

问题可能是什么? 谢谢。

2 个答案:

答案 0 :(得分:0)

我认为应该是

href="/static/css/bootstrap.css"

甚至

href="static/css/bootstrap.css"

通常,该资源在

下可用

http(s)://yourdomain/yourApplicationRoot/static/css/bootstrap.css

基本上,这是默认情况下spring公开静态资源的路径。

在您的情况下,它将是@{static/css/bootstrap.css}(或以斜杠开头)

答案 1 :(得分:0)

您的链接标记应为

<link href="../../static/css/bootstrap.css" th:href="@{css/bootstrap.css}" rel="stylesheet" media="screen"/>