我的应用程序找不到静态文件时遇到问题。然而,这只在一定程度上发生。从下面的代码片段中可以看到,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> /*/-->
不知道如何解决这个问题。谢谢!
当您的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添加上下文,并使路径成为绝对的。)