带有 Thymeleaf 的 SpringBoot - 找不到 css

新手上路,请多包涵

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

当由 Spring Boot 运行时,我无法从 html 页面访问 css 文件。

html文件

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

文件夹结构:

文件夹结构

我试过将 css 文件夹放入 static 文件夹和/或删除 addResourcesHandlers,通过相对路径和其他一些东西引用 css。似乎没有什么可以解决这个问题。如果您尝试解决此问题但没有找到解决方案,请也让我知道,以便我知道,我没有被忽略。

原文由 Bato 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 779
2 个回答

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

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

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

在删除了这个之后,我的 CSS 开始工作了。 =)

原文由 Bato 发布,翻译遵循 CC BY-SA 3.0 许可协议

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.在spring boot中使用预定义路径

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

.

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

原文由 Faraj Farook 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题