gpt4 book ai didi

css - Spring-Boot ResourceLocations 未添加导致 404 的 css 文件

转载 作者:IT老高 更新时间:2023-10-28 13:49:06 24 4
gpt4 key购买 nike

好吧,我有一个可以在本地计算机上运行的 spring-boot 应用程序。但是我注意到,当我执行 mvn package 时,我的 css 或 java 脚本都没有位于

/src/main/wepapp/css

正在被复制到目标目录中创建的 jar 文件(包)中。

spring boot 引用指南说

65.3 Convert an existing application to Spring Boot "Static resources can be moved to /public (or /static or /resources or /META-INF/resources) in the classpath root."

24.1.4 Static Content "Do not use the src/main/webapp folder if your application will be packaged as a jar. Although this folder is a common standard, it will only work with war packaging and it will be silently ignored by most build tools if you generate a jar."

这意味着我可以将我所有的 js 和 css 文件夹放入文件夹中

/src/main/resources/static

即现在我的结构是这样的

/src/main/resources/static/css/
/src/main/resources/static/js/

我所有的百里香模板仍然位于

/src/main/resources/templates/

我做到了,据我所知,我需要将 ResourceHandler 添加到我的 ResourceHandlerRegistry。以前,当我的所有 ccs 都在“/src/main/wepapp/css/”中时,我的 ResourceHandlers 看起来像这样,它对我来说效果很好。

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pdfs/**").addResourceLocations("/pdfs/").setCachePeriod(0);
registry.addResourceHandler("/img/**").addResourceLocations("/img/").setCachePeriod(0);
registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(0);
registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(0);

}

我尝试添加多个处理程序,例如

 registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(0);

 registry.addResourceHandler("/css/**").addResourceLocations("/static/css/").setCachePeriod(0);

 registry.addResourceHandler("/css/**").addResourceLocations("/").setCachePeriod(0);

等等。

但没有一个对我有用。显示 html 模板,但 Web 浏览器控制台在尝试定位/css/corresponing.css 或/js/corresponing.js 时报告 404

为了简化这个问题的调试,我特意在我的测试元素中禁用了 Spring 安全性。

我不完全理解的另一件事是部署程序集。我读过一篇文章说,当我确实希望将特定文件夹放入由 maven 生成的目标包 jar 文件中时,我确实需要将这些文件夹包含到我的部署程序集中,但是我确实做到了,但是“mvn 包”仍然没有解决我的/src/main/static 文件夹的所有内容(包括子文件夹)到目标 jar 文件中。但是,我看到将"template"文件夹复制到 jar 文件中。所以在幕后还有一些其他的魔法发生。

enter image description here

这是我如何在百里香布局中声明 css,即

/src/main/resources/templates/layout.html


<!DOCTYPE html>
<html>
<head>
<title layout:title-pattern="$DECORATOR_TITLE - $CONTENT_TITLE">Task List</title>
<link rel="stylesheet" type="text/css" media="all" th:href="@{/css/syncServer.css}" href="../css/syncServer.css" />
...
</head>
<body>
...
</body>
</html>

我的问题是:到目前为止我所做的配置是否正确,如果正确,我需要注意哪些其他选项/设置才能使应用程序找到位于/src/main/static/css/中的 css 文件

加一个

测试元素

git@github.com:TheDictator/sArchitecture.git

最佳答案

如果您将整个 static 目录移动到 resources 并完全删除 addResourceHandlers 配置,那么一切正常。

这意味着资源结构将如下图所示:

enter image description here

关于css - Spring-Boot ResourceLocations 未添加导致 404 的 css 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23733777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com