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 添加上下文,并使路径成为绝对路径。)
我的应用程序找不到我的静态文件时遇到问题。然而,这只发生在某个层面上。从下面的代码片段中可以看出,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 添加上下文,并使路径成为绝对路径。)