提问者:小点点

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


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

我的堆栈:Spring靴,百里香叶

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

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

我的应用公共资源目录结构:

/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/sfragments/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(works)的代码(包括使用Thymelaf作为片段的header.html)

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

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

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

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


共1个答案

匿名用户

当您的URL不是以斜线/开头时,它们会尝试解析当前目录。例如:

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 th:href="@{/css/mycss.css}" rel="stylesheet">

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