有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

未找到带有Thymeleaf css的java SpringBoot

首先要说的是,我一直在寻找解决方案,现在我非常绝望

当SpringBoot运行时,我无法从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>
...

应用程序。爪哇

@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

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


共 (6) 个答案

  1. # 1 楼答案

    在我的例子中,问题在于文件读取权限。 我复制了文件的样式。css“”来自另一个项目,浏览器无法读取它。 在重新创建“风格”之后。一切都很顺利

  2. # 2 楼答案

    如果将css放在静态文件夹中,则不需要addResourceHandlers方法

    .../static/css/app.css
    

    或者,如果您真的想将它们放在资产文件夹中:

    .addResourceLocations("classpath:/assets/") <-- without the * at the end
    .../assets/css/app/css
    

    在这两种情况下,css都应该通过

    th:href="@{/css/app.css}"
    
  3. # 3 楼答案

    将css文件夹放入资源/static文件夹中

  4. # 4 楼答案

    我的建议是(再次)将css文件夹放在static文件夹下,删除addResourcesHandler并使用绝对路径(例如/css/style.css)访问css

  5. # 5 楼答案

    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/

    之后,在你看来

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

    2。在spring boot中使用预定义路径

    从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/

    在我看来

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

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

  6. # 6 楼答案

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

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

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

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