我的目录结构是
目录结构
src/
main/
resources/
static/
CSS/
JS/
images/
template/
fragments/
header.html
footer.html
navBar.html
layouts/
appLayout.html
baseLayout.html
welcome.html
appLayout.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
<link rel="stylesheet" type="text/css" media="screen, projection"
href="/static/css/bootstrap.css"
th:href="@{/bootstrap.min.css}" />
<link rel="stylesheet" type="text/css" media="screen, projection"
href="/static/css/bootstrap.css"
th:href="@{/css/bootstrap.min.css}" />
<link rel="stylesheet" type="text/css" media="screen, projection"
href="/static/css/bootstrap.css"
th:href="@{css/bootstrap.min.css}" />
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap.min.css"
th:href="@{/webjars/bootstrap/2.3.0/css/bootstrap.min.css}" rel="stylesheet" />
</head>
<body>
<div th:replace="/fragments/header :: header"></div>
<div th:replace="/fragments/navbar :: navbar"></div>
<div class="container">
<div layout:fragment="content">
<p>Content goes here...</p>
</div>
<footer>
<div th:replace="/fragments/footer :: footer"></div>
</footer>
</div>
</body>
</html>
请检查上面布局中的<links>
标记,我在链接标记中使用了不同的位置,没有给出404 error
为什么会这样?
请看上面的图片,我在资源/ static / css /文件夹中有css和js文件,JS是int / resources / static / js /文件夹出了什么问题?为什么Chrome没有显示某些静态资源的404错误?
TD; LR静态资源未加载到我的百万美元布局
答案 0 :(得分:1)
Bootstrap CSS和JS网络请求返回200,因为响应成功,但内容不是您所期望的。如果您查看响应,您会看到每个CSS和JS请求都会返回HTML页面welcome.html。
这是因为您的Controller映射正在覆盖资源请求。您正在使用name
参数进行映射,而该映射不是正确的属性。请改用value
,例如:
@RequestMapping(value="/", method=RequestMethod.GET)
此更改将导致您的CSS和JS请求返回404。这是进步。
此外,请删除MvcConfig
,因为此行为是开箱即用的。
最后,调整资源的路径,如下所示:
<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />
现在CSS和JS请求将成功返回适当的内容。
答案 1 :(得分:0)
static是springboot中的默认资源映射,您不需要在资源路径中添加静态&lt;
link href="/css/bootstrap.min.css"rel="stylesheet"th:href="@{/css/bootstrap.min.css}"/>
答案 2 :(得分:0)
我从你的帖子中了解到,你有一整套静态内容,如CSS文件和js文件,当你改变这些链接的路径时,这些内容无法正确提供。
换句话说,当您更改这些链接的路径时,行为不会发生变化,并且您会收到意外结果。
对此的解决方案或问题的答案,为什么我会得到这种行为相当简单。
当您使用 Spring启动并尝试投放静态内容时,您的浏览器会缓存旧行为和旧请求的旧响应,表示您需要在更改链接路径时,破坏浏览器缓存以获得预期结果。
您可以通过将以下配置添加到application.properties文件来完成此操作:
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
您可以在此处的文档中找到有关如何在使用spring boot时提供静态内容的更多信息: