带有Thymeleaf的SpringBoot – 未找到css
首先要说的是,我现在一直在寻找解决方案,现在我非常绝望。
在Spring Boot运行时,我无法从html页面访问css文件。
html.file
AntiIntruder ...
Application.java
@SpringBootApplication // adds @Configuration, @EnableAutoConfiguration, @ComponentScan @EnableWebMvc public class Application extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/*"); } }
文件夹结构:
我已经尝试将css
文件夹放入static
文件夹和/或删除addResourcesHandlers,通过相对路径和其他一些东西引用css。 似乎没有解决这个问题。 请让我知道,如果你试图解决这个问题,但没有找到解决办法,那么我知道,我不会被忽视。
1.使用自定义资源路径
在您的Web配置中
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!registry.hasMappingForPattern("/assets/**")) { registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/"); } }
将style.css
文件放在此文件夹中
src/main/resources/assets/css/
在你的意见之后
。
2.在弹簧引导中使用预定义路径
从Web配置中删除addResourceHandlers
将style.css
放在以下任何文件夹中
-
src/main/resources/META-INF/resources/assets/css
-
src/main/resources/resources/assets/css/
-
src/main/resources/static/assets/css/
-
src/main/resources/public/assets/css/
在视图中
。
注意:您可以在此处删除assets
文件夹。 如果要执行此操作,请将其从预定义的资源文件夹中删除,也可以从view th:href
删除。 但我保持原样,因为你明确提到了问题中的assets/
路径。 所以我相信你需要在资源URL中拥有assets/
。
问题是Application.java
文件中的@EnableWebMvc
注释。 一旦我删除了那个,css就开始在localhost:8080/css/style.css
上可用,但是没有应用。 到目前为止,我还没有找到@EnableWebMvc
导致问题的原因。
然后我删除了一个映射到我已实现的/**
的控制器,以显示自定义错误页面。
@RequestMapping("/**") public String notFound() { return "errors/404"; }
在删除这个之后,我已经让我的CSS工作了。 =)
如果将css放在静态文件夹中,则不需要addResourceHandlers方法。
.../static/css/app.css
或者,如果您确实想将它们放在assets文件夹中:
.addResourceLocations("classpath:/assets/") <-- without the * at the end .../assets/css/app/css
在这两种情况下,css都应该可以通过
th:href="@{/css/app.css}"
我的建议是将(再次) css
文件夹放在static
文件夹下,删除addResourcesHandlers并使用绝对路径到达css(例如/css/style.css
)。
将您的css文件夹放在resources / static文件夹中