SpringBoot with Thymeleaf - css 未找到

2022-09-03 16:37:44

首先要说的是,我一直在寻找解决方案已经有一段时间了,我现在非常绝望。

我无法让css文件在Spring Boot运行时从html页面访问。

html.file

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
    <head lang="en">
        <title th:text='#{Title}'>AntiIntruder</title>
        <meta charset="UTF-8" />
        <link rel="stylesheet" type="text/css" media="all" href="../assets/css/style.css" th:href="@{/css/style.css}" />
    </head>
    <body>
...

应用.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/*");
    }
}

文件夹结构:

folder structure

我尝试将文件夹放入文件夹和/或删除addResourcesHandlers,通过相对路径和其他一些内容引用css。似乎没有什么能解决这个问题。请,也让我知道,如果你试图解决这个问题,但没有找到解决方案,所以我知道,我没有被忽视。cssstatic


答案 1

1. 使用自定义资源路径

在您的网络配置中

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
  if (!registry.hasMappingForPattern("/assets/**")) {
     registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");
  }
}

将文件放在此文件夹中style.css

src/main/resources/assets/css/

之后在您的视图中

<link rel="stylesheet" type="text/css" th:href="@{/assets/css/style.css}" />

.

2. 在弹簧靴中使用预定义的路径

从网络配置中删除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/

在风景中

<link rel="stylesheet" type="text/css" th:href="@{/assets/css/style.css}" />

.

注意:您可以在此处删除资产文件夹。如果要执行此操作,请将其从预定义的资源文件夹以及视图中删除 th:href。但我保持原样,因为,您在问题中明确提到了资产/路径。因此,我认为您的要求是在资源URL中拥有资产/


答案 2

问题出在文件中的注释。一旦我删除了那个,css就开始可用,但没有应用。到目前为止,我还没有找到导致问题的原因。@EnableWebMvcApplication.javalocalhost:8080/css/style.css@EnableWebMvc

然后,我删除了一个映射到我已实现的控制器,以便显示自定义错误页面。/**

@RequestMapping("/**")
public String notFound() {
    return "errors/404";
}

在删除这个之后,我已经让我的css工作了。=)


推荐