Spring 未找到引导上下文路径静态文件

Spring Boot Context Path Static Files Not Found

我的应用程序找不到我的静态文件时遇到问题。然而,这只发生在某个层面上。从下面的代码片段中可以看出,css、图像、js 等对某些文件有效,对其他文件无效。不确定我在这里遗漏了什么。

我的堆栈:Spring Boot,Thymeleaf

我的 application.yml 文件的一部分:

server:
  port: 8090
  servlet:
    context-path: /myapp

我的应用public资源目录结构:

/resources
   /public
      /css
      /images
      /js

我的应用程序模板结构以及样式和图像的作用:

/resources
  /templates/index.html (works)
  /templates/admin/index.html (works)
  /templates/admin/user/admin/showuser.html (does not work)

来自 /resources/admin/fragments/header.html 的代码(用作其他文件的头文件)

<!DOCTYPE html>
<html>
<head>
    <link href="css/mycss.css" rel="stylesheet">

来自 /resources/templates/index.html 的代码(有效)(不包括 header.html 片段)

<link href="css/mycss.css" rel="stylesheet">

来自 /resources/templates/admin/index.html 的代码(有效)(包括 header.html 作为使用 Thymeleaf 的片段)

<!--/*/ <th:block th:include="/admin/fragments/header"></th:block> /*/-->

来自 /resources/templates/admin/user/admin/showuser.html 的代码(不起作用)(包括 header.html 作为使用 Thymeleaf 的片段)

<!--/*/ <th:block th:include="/admin/fragments/header"></th:block> /*/-->

不知道如何解决这个问题。 谢谢!

当您的网址以斜杠/开头时,它们会尝试解析当前目录。例如:

Page: /templates/index.html
Css:  css/mycss.css

The browser tries to locate /templates/css/mycss.css

如果不起作用的情况:

Page: /templates/admin/user/admin/showuser.html
Css:  css/mycss.css

The browser tries to locate /templates/admin/user/admin/css/mycss.css

如果您想确保您的 css 在任何地方都能正常工作,您需要确保 link 始终指向正确的位置。我猜这样的事情会奏效:

<link th:href="@{/css/mycss.css}" rel="stylesheet">

(使用 Thymeleaf 添加上下文,并使路径成为绝对路径。)