带有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文件夹中